2011-08-30 8 views
2

Djangoフレームワーク。 HTMLフォーム。 views.pyスクリプト。フォームの検証とMultiValueDictKeyError

私は複数のチェックボックスを持つフォームを持っていますが、ユーザーはzipファイルでダウンロードしたいファイルに対応してチェックボックスを選択します。

MultiValueDictKeyError at/qatools/debug/logs/ 「ログ」がQueryDictに見つかりません:このチェックボックスをオフにすると、すべてのチェックボックスをオンにすると、

私の検証は以下の通りです。チェックボックスがチェックされているかどうかを判断し、シェルスクリプトを呼び出す形式で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になる関数ですキーは存在しません。 [QueryDict docs](https://docs.djangoproject.com/en/1.3/ref/request-response/#django.http.QueryDict)を参照してください。 – eric

答えて

3

これはPOSTに未チェックのチェックボックスは、予想通り「オフ」の値を持つ、POST値ではない存在しません... HTMLフォームの標準問題です。だから、存在を確認する必要があります。

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

ええ、私はそれを考え出した!私に答えてもらえませんか?とにかくお返事いただきありがとうございます! – smurf

+1

あなたはまだ答えを受け入れるべきです... –