2012-01-05 24 views
2

1つの送信ボタンの下に2つのHTML送信フィールドがあります。その1つはオプションです。送信されたデータを取得するために 'get'メソッドを使用していますが、ユーザが空のフォームを送信する場合に備えてオプションのフィールドにデフォルト値を設定します。私がこれをしなければ、私はMultiValueDictKeyErrorを得る。request.get()(post.getではなく)のデフォルト値を設定できますか?

if request.method == 'GET': 
     # required 
     name = request.GET['name'] 
     # optional 
     color = request.GET['color'] 

私は可能な解決策はすべてのフィールドを除いて試してみたいと思いますが、より洗練された方法がありますか?私はget.postのために()を使用すると、これはちょうどrequest.getのために()

任意のアイデアを動作するようには思えない。しかし

color = request.POST.get('color', False) 

ような何かを行うことができます知っていますか?

おかげで、

fertileneutrinoここで混乱

+0

間違いなくrequest.GETでも動作します。 .get()はすべての辞書のようなオブジェクトのメソッドです。 – Tom

+0

しかし、私はrequest.get()にデフォルト値を追加することはできません。私はやってみると同じエラーが出ます。 –

+0

あなたはリクエストにアイテムを追加しようとしています。取得しますか?私は割り当てができるとは思わない。あなたはそれを新しい辞書にコピーしてそれをする必要がありますが、これは本当に巻き込まれているようです。あなたは何をしようとしているのですか? – Tom

答えて

6

... request.get()は動作しませんが、request.GET.get()をする必要があります。誤って入力したのですか、実際にrequest.get()を使用していましたか?

+0

私は実際にrequest.get()を使用していました。 GET.get( 'color'、False)は、 '' instancemethod 'オブジェクトは添字付きではありません。'というエラーを返します。デバッグする必要がありますか? –

+0

括弧が '()'で 'request.GET.get( 'color'、False)'していますか? subscriptableは、あなたが中括弧 '[]'を使っていたことを示唆しています。 – Alasdair

+0

これは機能しています。いい答えだ!私はすべての[]を()で置き換えてしまい、あなたの提案を見るためにここに戻りました –

関連する問題