为什么 Django 在从 Django 1.11 升级到 2.2 后,管理员更改页面显示 html 而不是 link?
Why Django does admin change page displays html instead of link after upgrading from Django 1.11 to 2.2?
我最近升级到 Django 2.2,现在显示 link 的 HTML 而不是实际的 link。
这是我怀疑行为发生变化的代码:
class RequestAdmin(admin.ModelAdmin):
ordering = ('id', 'status', )
list_display = ('detail_link', 'status', 'requester', 'added', 'type', 'change_description', 'approve_or_deny')
... omitted for brevity ...
# ID in list is rendered as link to open request details page
def detail_link(self, obj):
return '<a href="%s%s%s%s%s" target="_blank">%s</a>' % (('https://' if self.request.is_secure() else 'http://'),
self.request.META['HTTP_HOST'],
(settings.GUI_ROOT if settings.GUI_ROOT != '/' else ''),
'/#/requests/', obj.id, obj.id)
在此之前会呈现 link。但现在如果改为呈现此文本:
<a href="http://app-dev-001.example.com:5200/gui/#/requests/1" target="_blank">1</a>
Django 与 2.0 版本有更多不同
为您的 link
使用 format_html
P.S。我什至建议您使用 Django 3.0
以避免将来出现类似问题
我最近升级到 Django 2.2,现在显示 link 的 HTML 而不是实际的 link。
这是我怀疑行为发生变化的代码:
class RequestAdmin(admin.ModelAdmin):
ordering = ('id', 'status', )
list_display = ('detail_link', 'status', 'requester', 'added', 'type', 'change_description', 'approve_or_deny')
... omitted for brevity ...
# ID in list is rendered as link to open request details page
def detail_link(self, obj):
return '<a href="%s%s%s%s%s" target="_blank">%s</a>' % (('https://' if self.request.is_secure() else 'http://'),
self.request.META['HTTP_HOST'],
(settings.GUI_ROOT if settings.GUI_ROOT != '/' else ''),
'/#/requests/', obj.id, obj.id)
在此之前会呈现 link。但现在如果改为呈现此文本:
<a href="http://app-dev-001.example.com:5200/gui/#/requests/1" target="_blank">1</a>
Django 与 2.0 版本有更多不同
为您的 link
使用 format_htmlP.S。我什至建议您使用 Django 3.0
以避免将来出现类似问题