0
我遇到了模板問題:我試圖顯示一個用於更改值的表單,其中用戶輸入textarea
中的當前值和舊值爲了審計目的而被保存在隱藏的字段中。這個值通常是一些HTML,當我渲染頁面時,隱藏字段中的這個HTML似乎得到了部分渲染:隱藏字段的value
屬性被輸入的HTML中的第一個引號關閉,其餘的HTML噴出到我的頁面上。我試過使用escape
修飾器,但這並沒有改變任何東西。將HTML放在Django的隱藏表單字段中
我遇到了模板問題:我試圖顯示一個用於更改值的表單,其中用戶輸入textarea
中的當前值和舊值爲了審計目的而被保存在隱藏的字段中。這個值通常是一些HTML,當我渲染頁面時,隱藏字段中的這個HTML似乎得到了部分渲染:隱藏字段的value
屬性被輸入的HTML中的第一個引號關閉,其餘的HTML噴出到我的頁面上。我試過使用escape
修飾器,但這並沒有改變任何東西。將HTML放在Django的隱藏表單字段中
首先,更好的解決方案可能是將審覈值保留在用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 }}
爲什麼你需要在所有的渲染舊的HTML的前端?用戶可以發佈新的html,並且可以根據您當前存儲的值在後端比較/檢查/驗證舊的 – dm03514