如何在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_attribute
和my_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)
答案 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()来逃避用户提供的 输入。