2011-01-24 47 views
3

現在我不得不這樣做(模板代碼)最佳實踐:Django的:標誌模型領域安全的模板

object.name|safe 

有很多次,我只是單純地忘記添加safe過濾器。我的問題:

  1. 這些對象是用戶在表單級別提交和清理的。爲什麼我應該更加小心地標記它們是否安全?

  2. 如果上面的答案是「你很好去」,那麼默認情況下如何使模型字段安全?無需記住使用safe標籤?

回答

0

safe是一個處理HTML編碼的模板標籤,而不是對象驗證。
documentation

您只需如果你用HTML數據輸出文本字段內,例如該hyour用戶與TinyMCE的或CKEditor的

+1

要擴展什麼多米尼克說,安全過濾器是指標記模板渲染器的安全信息。默認情況下,Django會將模板上的所有輸出轉義爲輸出不安全,這意味着它可能包含不希望瀏覽器解釋爲代碼的html/script代碼。如果你確實有一個代碼需要瀏覽器解釋的字段,你可以使用安全標籤來告訴Django在沒有任何自動轉義的情況下輸出。 – 2011-01-24 15:10:32

4

填寫關於#2的文本字段使用它,有一個稱爲mark_safe的文檔記錄功能很差,您可以使用它。例如,在我寫了一個自定義表單字段我需要返回與該label_from_instance方法HTML代碼的字符串,所以我回用mark_safe:

return mark_safe('<span class="foo">Some HTML output</span>')