2011-08-30 81 views
2

Django框架。 Html表單。 views.py腳本。表單驗證和MultiValueDictKeyError

我有一個帶有多個複選框的表單,用戶選擇一個複選框來對應他們想要下載到一個zip文件中的文件。當所有的複選框被選中,將創建一個zip文件,並能夠但是下載時複選框是選中我收到以下錯誤:

MultiValueDictKeyError在的QueryDict找不到/ qatools /調試/日誌/ 鍵「日誌」:

我的驗證如下。它決定了一個複選框是否已被選中,並按照其調用shell腳本的格式分配0或1。

logs = 0 
    if request.POST.get & request.POST['logs'] == "on": 
     logs = 1 
+0

沒關係,固定它..本來應該是: 日誌= 0 如果request.POST和request.POST [「原木」]「原木」 == 「on」: logs = 1 – smurf

+0

執行if語句的簡短方法:'if request.POST.get('logs')==「on」:'因爲'get'是一個函數,默認爲None if關鍵不存在。請參閱[QueryDict文檔](https://docs.djangoproject.com/en/1.3/ref/request-response/#django.http.QueryDict)。 – eric

回答

3

這是一個標準的問題與HTML表單...在POST一個未選中的複選框將不會在POST值存在,沒有「關閉」的價值預期。所以,你需要檢查是否存在:

logs = 0 
if request.POST.get and 'logs' in request.POST and request.POST['logs'] == "on": 
    logs = 1 
+0

是的,我想通了!我不會讓我回答。感謝您回覆! – smurf

+1

你應該仍然接受答案... –