Django 1.4:在函数中返回HTML

时间:2014-01-15 08:56:22

标签: python html django django-1.4

如何在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以来,模块format_html()中有方法django.utils.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)

1 个答案:

答案 0 :(得分: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或a   可调用的,Django默认会HTML输出输出。如果你的话   而不是逃避方法的输出,给出方法一个   allow_tags属性,其值为True。但是,要避免使用XSS   漏洞,你应该使用format_html()来逃避用户提供的   输入。