在Django Admin更改列表中显示未转义的HTML字符串

Mic*_*l S 6 django escaping django-templates django-admin

我目前面临严重问题.我使用标准的django管理界面包括.更改列表以显示我的一个模型.该模型有一个字段,其中包含一个链接(例如在数据库中:http:// localhost:8000/data/somefile.pdf'> link).

我现在想要的是这个字符串被转义为非链接并显示为链接.我已经在"change_list_results.html"中尝试了以下内容:

{% for result in results %}
<tr id="{{ result.1|adminfilter }}" class="{% cycle 'row1' 'row2' %}">
    {% for item in result %}
        {{ item|safe }}
    {% endfor %}</tr>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

我在输出的实际项目上使用了"| safe".此外,我尝试了"{%autoescape off%}".同样的结果,String被转义了.

你有没有看到任何其他方法让字符串显示未转义?

Dan*_*man 15

您想要设置allow_tags=True您的方法.它有点隐藏,但它在文档中有所描述 - 关于此链接带你到哪一个屏幕.

  • 由于链接,答案仍然正确。但是 `allow_tags` 在 Django 1.9 中已被弃用。使用 `format_html()` 代替: `Deprecated since version 1.9: 在旧版本中,您可以向方法添加一个 allow_tags 属性以防止自动转义。此属性已弃用,因为使用 format_html()、format_html_join() 或 mark_safe() 更安全。`。https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display (2认同)