2016-02-05 37 views
2

我想建立一個Django應用程序,在它的模型MarkupField,像這樣:Django的markupfield返回字符串

from django.db import models 
from markupfield.fields import MarkupField 

class Recipe(models.Model): 
    instructions = MarkupField(default_markup_type='markdown') 

然後我渲染領域的一個Jinja2的模板,像這樣:

{% if recipe.instructions %} 
    {{ recipe.instructions }} 
{% else %} 
    No instructions have been added yet. 
{% endif %} 

渲染markdowned文本的工作完美無瑕,但它被作爲一個字符串的DOM中,因此瀏覽器不解釋HTML標記,就像你可以在這裏看到:

View in the browser, note the <p> tag.

View in the DOM inspector, also note the <p> tags.

,我不覺得我錯過了Django的markupfield的文檔有關的東西,但不知何故,我需要擺脫這個字符串表示的。

你們中的任何人都有想法?提前致謝。

+1

如果您添加'安全'過濾器是否有效:'{{recipe.instructions | safe}}'? – doru

+0

@doru沒有,不起作用。 –

+0

如果您使用'recipe.instructions.rendered'它會做出任何更改嗎? – doru

回答

0

感謝@多魯的建議我偶然發現了Jinja2的文檔,發現autoescaping聲明:

{% autoescape off %}{{ recipe.instructions }}{% endautoescape %} 

對我來說這一個工作。

甚至可以通過將autoescape選項設置爲False來使其在全局範圍內工作。

{ 
    'BACKEND': 'django_jinja.backend.Jinja2', 
    ... 
    'OPTIONS': { 
     'autoescape': False, 
     ... 
    } 
},