【问题标题】:Django 1.4: return HTML in functionDjango 1.4:在函数中返回 HTML
【发布时间】:2014-01-15 08:56:22
【问题描述】:

如何在 Django 1.4 的函数中返回一个 HTML 标签,它将被解释?

class MyModel(models.Model):
    my_attribute = models.CharField(max_length=50)

    def my_link(self):
        return '<a href=google.com>google</a>'

想象一下,我有这个带有 my_link 方法的模型。在我的管理界面中,我想显示my_attributemy_link 列。但问题是,html-Tag 不会被解释。它只是打印文本。

从 Django 1.5 开始,在模块 django.utils.html 中有方法 format_html()。但我在 Django 1.4 中需要类似的东西

编辑
myapp.admin.py

from django.contrib import admin
from myapp.models import MyModel

class MyModelAdmin(admin.ModelAdmin):
    list_display = ['my_attribute', 'my_link']

admin.site.register(MyModel, MyModelAdmin)

【问题讨论】:

    标签: python html django django-1.4


    【解决方案1】:

    设置allow_tags属性:

    class MyModel(models.Model):
        my_attribute = models.CharField(max_length=50)
    
        def my_link(self):
            return '<a href=google.com>google</a>'
        my_link.allow_tags = True # <---
    

    根据ModelAdmin.list_display documentation

    如果给定的字符串是模型的方法,ModelAdmin 或 可调用,默认情况下,Django 将对输出进行 HTML 转义。如果你愿意 而不是逃避方法的输出,给方法一个 allow_tags 属性,其值为 True。但是,为了避免 XSS 漏洞,你应该使用 format_html() 来逃避用户提供的 输入。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    相关资源
    最近更新 更多