2014-01-15 62 views
2

如何在Django 1.4中的函數中返回將被解釋的HTML標記?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這個方法。在我的Admin界面中,我想顯示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) 

回答

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

如果st ring給出的是模型的一種方法,ModelAdmin或可調用的,Django將HTML默認轉義輸出。如果你想 而不是逃避方法的輸出,給該方法一個 allow_tags屬性的值爲真。但是,爲避免XSS 漏洞,應使用format_html()來轉義用戶提供的 輸入。

+0

我已經試過了。它不適合我。仍然相同的行爲 – 0xAffe

+0

@SomeGuy,你能顯示管理員代碼嗎? – falsetru

+0

我加了代碼 – 0xAffe