Djangoビューでは、request.GET['variablename']
ので、あなたの意見では次のようなことができます:
myvar = request.GET['myvar']
実際のrequest.GET['myvar']
オブジェクトタイプは次のとおりです。
<class 'Django.http.QueryDict'>
ここで、同じパラメーター名で複数の変数を渡す場合、つまり:
http://example.com/blah/?myvar=123&myvar=567
パラメーターlist
に対してpython myvar
が返されます]を選択してから、次のようにします。
for var in request.GET['myvar']:
print(var)
ただし、URLで最後に渡された値のみを取得しようとすると、つまり上記の例では567が取得され、シェルでの結果は次のようになります。
5
6
7
ただし、request.GET
list
を持っているようです。つまり:
<QueryDict: {u'myvar': [u'123', u'567']}>
Ok Update:最後の値を返すように設計されています。私のユースケースはリストが必要です。
from Django docs:
QueryDict .getitem(key)指定されたキーの値を返します。キーに複数の値がある場合、getitem()は最後の値を返します。キーが存在しない場合、Django.utils.datastructures.MultiValueDictKeyErrorを発生させます。 (これはPythonの標準KeyErrorのサブクラスなので、KeyErrorのキャッチに固執することができます
QueryDict.getlist(key)Pythonリストとして、要求されたキーを持つデータを返します。キーが存在しない場合は空のリストを返します。何らかのリストを返すことが保証されています。
更新:誰かがDjango devがこれを行った理由を知っているなら、私に知らせてください。
GETオブジェクトの getlist() 関数が必要です。
request.GET.getlist('myvar')
別の解決策は、要求オブジェクトのコピーを作成することです...通常、request.GETまたはrequest.POSTオブジェクトを反復処理することはできませんが、コピーに対してこのような操作を行うことはできます。
res_set = request.GET.copy()
for item in res_set['myvar']:
item
...