Open youthhng opened 7 years ago
@youthhng
這個是兩個不一樣的東西
在p.196中是在驗證form裡面的資料,而django會先把form裡"clean",而這裡就可以讓使用者自己擴展或複寫進行自定義的操作,而form中合法(valid)的資料則都會被集中到cleaned_data
讓之後續使用不需煩惱資料的處理或驗證,因為從clened_data拿到的值就是由form處理或驗證過的合法資料
但在P.198我們是在template中"畫"出要給使用者看的網頁,而處理這件事的則是模版引擎(template eninge),當我們把form傳到版中,其他也是拿到你用f.content拿到的forms.CharField,但經由引擎解析其中的欄位(如 initial,widget…)畫出相對的html元素
感謝您的回覆!
搭配上您的解說,現在我比較了解p.196上半段的 "clean_表單欄位" 和下半斷的說明了~
您好:
對於 p.196的 forms.py 的 "return content" ,我有一些疑惑:
我的預期是: (1) 呼叫 f.content ,會回傳 content = forms.CharField(max_length=200, widget=forms.Textarea()) 的結果 (2) 要特地呼叫 f.clean_content ,才會回傳 clean_content() 裡的結果;或是透過撰寫 def init(self, content) 的方式來達成。
但從 p.198 頁的結果來看,似乎直接呼叫前者,就可以達成後者的需求......
因為對 python 和 django 都還不是很熟悉,所以想問一下這個基本的問題......感謝!