gpt4 book ai didi

django - 防止django admin转义html

转载 作者:行者123 更新时间:2023-11-28 19:35:24 24 4
gpt4 key购买 nike

我正在尝试在 django admin 的 list_display 中显示图像缩略图,我是这样做的:

from django.utils.safestring import mark_safe

class PhotoAdmin(admin.ModelAdmin):
fields = ('title', 'image',)
list_display = ('title', '_get_thumbnail',)

def _get_thumbnail(self, obj):
return mark_safe(u'<img src="%s" />' % obj.admin_thumbnail.url)

尽管我将字符串标记为安全,但管理员仍将缩略图显示为转义 html。我做错了什么?

最佳答案

从 Django 1.9 开始,您可以使用 format_html() , format_html_join() , 或 allow_tags在你的方法中。查看list_display文档以获取更多信息。

问题中使用 mark_safe 的代码将起作用。然而,对于此类方法来说,更好的选择可能是 format_html,它将转义参数。

def _get_thumbnail(self, obj):
return format_html(u'<img src="{}" />', obj.admin_thumbnail.url)

在早期版本的 Django 中,使用 mark_safe() 是行不通的,Django 会对输出进行转义。解决方案是为该方法提供一个值设置为 True 的 allow_tags 属性。

class PhotoAdmin(admin.ModelAdmin):
fields = ('title', 'image',)
list_display = ('title', '_get_thumbnail',)

def _get_thumbnail(self, obj):
return u'<img src="%s" />' % obj.admin_thumbnail.url
_get_thumbnail.allow_tags = True

关于django - 防止django admin转义html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3298083/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com