0

私はPOSTデータを期待しており、投稿されたものに基づいてフォームを作成するときに使用するカスタム ディクショナリを作成したいと考えています。POST データの内容を比較しようとして問題が発生しているようです。Ubuntu 12.04でPython 2.7でDjango 1.4を使用しています。

クライアントが期待する戻りメソッドのタイプを教えてくれるというPOSTフィールドがあるとします。値またはreturn_methodのいずれかを送信します。ここで、取得した値に基づいて異なる辞書を作成したいと考えています。postget

if (request.POST.get('return_method') == 'get'):
    cust_dict = { 'key1' : value1,
                  'key2' : value2,
                  'key3' : value3,
                }

elif (request.POST.get('return_method') == 'post'):
    cust_dict = { 'key1' : value1,
                  'key2' : value2,
                  'key3' : another_value,
                }

これは機能していません。フィールドにデータを入力していますがget、どちらの辞書も作成されていません。

代わりに何をすることをお勧めしますか?

編集:私の問題は、私の変更がDjangoサーバーで更新されていないことだったようです。(Apacheを再起動する必要がありました)

4

2 に答える 2

1
 cust_dict = { 'key1' : value1,
               'key2' : value2,
             }


if request.POST.get('return_method') == 'get'): 
  cust_dict['key3'] = value3
elif request.POST.get('return_method') == 'post):
  cust_dict['key3'] = another_value

key3があなたに追加されていない場合cust_dict、の値return_methodはどちらgetでもありませんpost

于 2012-07-16T15:08:42.597 に答える
1

これが私がそれにアプローチする方法です。

custom = {
  "get" : {
    'key1' : value1,
    'key2' : value2,
    'key3' : value3,
  },

  "post" : {
    'key1' : value1,
    'key2' : value2,
    'key3' : another_value,
  },
}

try:
    cust_dict = custom[request.POST.get('return_method').strip()]
except KeyError:
    # .. handle invalid value

とはいえ、あなたのバージョンが動作しない理由はありません。に表示されている値を確認しましたrequest.POST.get('return_method')か? おそらく、値に空白があり、文字列の一致が妨げられている可能性があります (.strip()上記のコード例に注意してください)。

于 2012-07-16T15:10:30.913 に答える