Django Admin中format_html_join分隔符<br>无法渲染为HTML换行问题
问题原因
format_html_join 方法的第一个参数(分隔符)默认会被Django自动做HTML转义处理,你直接传<br>的话,最终会被转义为<br>,所以前端只会显示为纯文本而不是换行标签。而第二个参数是格式模板字符串,里面的静态HTML标签不会被转义,所以你写在模板里的<br>可以正常生效。
至于你尝试传入的\n属于文本换行符,HTML默认不会将其渲染为可见换行,所以完全不会显示。
解决方法
- 先导入Django的安全字符串工具:
from django.utils.safestring import mark_safe
- 把你传入的分隔符用
mark_safe包裹,标记为不需要转义的安全HTML内容,同时可以把模板里多余的<br>去掉,避免第一个链接前出现多余空行,修改后代码如下:
format_html_join( mark_safe('<br>'), '<a href="{}">{}</a>', ( (reverse("admin:research_webproductpage_change", args=[wpp.id]), wpp.title[:30]) for wpp in webproductpages ) )
修改后每个链接之间会用换行标签分隔,即可实现每个链接独占一行的展示效果。
内容的提问来源于stack exchange,提问作者Ozzy Black
相关产品推荐
相关产品推荐

