Djangoリクエストの取得パラメータ


84

Djangoリクエストには、次のものがあります。

POST:<QueryDict: {u'section': [u'39'], u'MAINS': [u'137']}>

sectionとの値を取得するにはどうすればよいMAINSですか?

if request.method == 'GET':
    qd = request.GET
elif request.method == 'POST':
    qd = request.POST

section_id = qd.__getitem__('section') or getlist....

7
魔法のメソッドの1つを直接呼び出さないでください。常に適切なヘルパー関数を使用してください。
Ignacio Vazquez-Abrams

kセクションをデコードする方法はありますか
ハルク

1
これらのオブジェクトに関するdjangoのドキュメントを読んでください:docs.djangoproject.com/en/dev/ref/request-response/…。Pythonのdictと比較していくつかの違いがあります。
スキー

回答:


90

通常の辞書と同じように[]QueryDictオブジェクトから値を抽出するために使用できます。

# HTTP POST variables
request.POST['section'] # => [39]
request.POST['MAINS'] # => [137]

# HTTP GET variables
request.GET['section'] # => [39]
request.GET['MAINS'] # => [137]

# HTTP POST and HTTP GET variables (Deprecated since Django 1.7)
request.REQUEST['section'] # => [39]
request.REQUEST['MAINS'] # => [137]

9
これらすべての年後のヒント:request.REQUESTは非推奨になりました
aronadaal 2015年

189

次のものも使用できます。

request.POST.get('section','') # => [39]
request.POST.get('MAINS','') # => [137] 
request.GET.get('section','') # => [39]
request.GET.get('MAINS','') # => [137]

これを使用すると、エラーが発生しなくなります。いずれかのキーを持つPOST / GETデータが定義されていない場合、例外を発生させる代わりに、フォールバック値(.get()の2番目の引数が使用されます)。


1
間違いなく最も堅牢な方法です!
d-coder 2015
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.