2014-02-19 33 views
0

我遇到了模板問題:我試圖顯示一個用於更改值的表單,其中用戶輸入textarea中的當前值和舊值爲了審計目的而被保存在隱藏的字段中。這個值通常是一些HTML,當我渲染頁面時,隱藏字段中的這個HTML似乎得到了部分渲染:隱藏字段的value屬性被輸入的HTML中的第一個引號關閉,其餘的HTML噴出到我的頁面上。我試過使用escape修飾器,但這並沒有改變任何東西。將HTML放在Django的隱藏表單字段中

+1

爲什麼你需要在所有的渲染舊的HTML的前端?用戶可以發佈新的html,並且可以根據您當前存儲的值在後端比較/檢查/驗證舊的 – dm03514

回答

0

首先,更好的解決方案可能是將審覈值保留在用editable=False定義的單獨模型字段中。您仍然可以在窗體的清潔方法進行檢查,對值:

def clean(self): 
    cleaned_data = super(SomeForm, self).clean() 
    if instance.the_audit_field == cleaned_data['the_editable_field']: 
     ...raise a validation error? 

您也可以從模型的save方法中修改審計字段的值。

其次,假設您必須按照您現在的方式進行操作,請讓我介紹模板中的非轉義值。我假設你正在使用類似以下內容:

<textarea value="{{ form.the_audit_field.value }}"></textarea> 

你應該使用下列內容:

<textarea>{{ form.the_audit_field.value }}</textarea> 

注意,數值超出textarea,代替的value屬性它。

一個更好的方法來做到這一點是乾脆讓Django的渲染場爲你喜歡的以下內容:

{{ form.the_audit_field }}