2009-09-14 30 views
1

我使用AppEngine上的Django表單驗證框架(http://code.google.com/appengine/articles/djangoforms.html),像這樣:AppEngine上的Django表單驗證框架:如何去除HTML等?

data = MyForm(data=self.request.POST) 
    if data.is_valid(): 
    entity = data.save(commit=False) 
    entity.put() 

我不知道是否有一種方法來預處理POST數據(剔除惡意代碼,HTML等)存放前它。似乎任何表單驗證庫都應該提供類似的東西,不是嗎?

感謝

漢納斯

回答

2

簡短的回答:

forms.is_valid()自動調用一個名爲清潔方法填充字典forms.cleaned_data()。如果您想執行任何自定義驗證,請定義您自己的'clean_filed_name',以返回已清除的字段值或提高forms.ValidationError()。出錯時,該字段上的相應錯誤會自動填充。

龍答:

Refer Documentation

1

除了上述的答案,不同的觀點:不要。用盡可能少的處理存儲用戶輸入,並在輸出上清理數據。 Django模板爲此提供了過濾器 - 「轉義」是一種轉義所有HTML標記的過濾器。

這種方法在輸入時對數據進行消毒處理的優點有兩個方面:您可以隨時更改如何清理數據,而不必在所有舊數據中「祖父」,並且當用戶想要編輯某些內容時,您可以向他們顯示他們輸入的原始數據,而不是「清理」版本。在錯誤的時間清理數據也是導致雙重轉義的主要原因。