このURLからクエリ文字列を取得する必要があります https://stackoverflow.com/questions/ask?next=1&value= を使用しません request.META 。クエリ文字列を取得するには、さらに2つの方法があることがわかりました。
urlparseurlparse.urlparse(url).queryの使用
url encodeの使用urlencodeを使用し、request.GET params辞書をその中に渡して、文字列表現を取得します。
どちらの方法が良いですか?私の同僚はurlencodeを好みますが、満足のいく説明を提供していません。彼らは、urlparseが内部的にurlencodeを呼び出していると主張していますが、これはurlencodeがurllibモジュールに住んでいるので、私にはわかりません。
このようなGETパラメーターを使用してクエリ文字列を作成できます
request.GET.urlencode()
これには?
プレフィックスが含まれず、元のリクエストと同じ順序でキーを返さない場合があります。
3番目のオプション:
>>> from urlparse import urlparse, parse_qs
>>> url = 'http://something.com?blah=1&x=2'
>>> urlparse(url).query
'blah=1&x=2'
>>> parse_qs(urlparse(url).query)
{'blah': ['1'], 'x': ['2']}
Python 3+でこれは次のように利用可能です:
from urllib.parse import parse_qs
使用したい
request.META['QUERY_STRING']
ドキュメントから:
https://docs.djangoproject.com/en/stable/ref/request-response/#Django.http.HttpRequest.META
これには、?
プレフィックスは含まれません。
request.argも使用できます
if 'next' in request.arg and 'values' in request.arg:
next = request.arg.get('next', '')
value = request.arg.get('value', '')