2010-07-25 86 views
1

我必須發送一些粗體文本之間的粗體文本,並將其從視圖發送到模板。我這樣做:使用django製作文本粗體

我保存了一個像這樣的字符串<b> TextPlaintext </b >在一個變量中並將其返回給模板。 「<b>」標籤不被解釋。

如何使一些文字在django視圖中加粗?

回答

2

不應在視圖中設置粗體文字。事實上,該視圖不應該關注格式(這是模板的作用)。但是,您可以執行的操作是在渲染上下文中添加一個額外變量,並根據其值將文本設置爲粗體或不在模板中。

例如:

在視圖:

#... 
is_important = True if something else False 
extra_context.update({'is_important': is_important}) 
#... 

在模板:

... 
{% if is_important %}<bold>{{ text_to_render }}</bold>{% else %}{{ text_to_render }}{% endif %} 
... 

更普遍,決定是否文本是大膽與否,是不是甚至格式化,而不是樣式,不應該在模板中進行(所以你不應該使用< 粗體>標記)。所以我建議:

... 
<span {% if is_important %}class="is-important"{% endif %}> 
{{ text_to_render }} 
</span> 
... 

而且樣式表:

.is-important{ 
    font-weight: bold; 
} 
6

Django自動轉義模板中的字符串值,以提高安全性。

如果你知道某個值中包含了HTML,並信任,那麼你就可以關閉逃逸:

{{my_trusted_html|safe}} 
+0

+1爲是*正確*,但OP在做任何類型的文本格式的視圖作出一個更根本的錯誤,正如@SébastienPiquemal指出的那樣。 – 2010-07-25 21:47:46

+0

我想我並不像你那麼教條。在視圖中創建HTML內容是有原因的,甚至是在模型中創建或存儲在數據庫中。知道如何正確地將數據放到頁面上是一個有用的工具。我不假定對OP的問題有足夠的瞭解,說明他是否在做一些像「犯錯」那樣的壞事。 – 2010-07-25 21:54:19