You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django 4.2.2升级后Admin ListView按钮引号转义异常问题

Django 4.2.2中ListView按钮HTML引号转义问题解决方法

问题原因

Django 1.X中的allow_tags=True属性在高版本中已被弃用,升级后Django默认会对返回的字符串进行HTML转义,导致原本的引号被双重转义为"。

解决方案

使用Django提供的mark_safe()函数标记HTML内容为安全,替代已弃用的allow_tags属性。

修改步骤:

  1. 导入mark_safe工具:
from django.utils.safestring import mark_safe
  1. 修改clone_button方法,用mark_safe()包裹返回的HTML字符串,并移除allow_tags=True:
def clone_button(self, obj):
    button = "<button type=\"button\" onclick=\"location.href='/admin/clone/%s/%s';\">Clone</button>" % (obj.id, "keep_date")
    return mark_safe(button)
# 移除不再生效的 clone_button.allow_tags=True

可选优化:使用f-string简化代码

def clone_button(self, obj):
    button = f"<button type='button' onclick='location.href=\"/admin/clone/{obj.id}/keep_date\";'>Clone</button>"
    return mark_safe(button)

原理说明

mark_safe()会将字符串标记为“安全的HTML”,告诉Django不需要对其进行自动转义,从而保证按钮的HTML代码能正确渲染,引号只会被转义一次为&quot;,避免出现双重转义的&amp;quot;。

内容的提问来源于stack exchange,提问作者ger.s.brett

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 16:03:27