다음과 같은 URL이 주어지면 쿼리 매개 변수의 값을 어떻게 구문 분석 할 수 있습니까? 예를 들어,이 경우 값을 원합니다 def
.
/abc?def='ghi'
내 환경에서 Django를 사용하고 있습니다. request
나를 도울 수 있는 방법이 있습니까?
나는 사용을 시도 self.request.get('def')
했지만 ghi
원하는대로 값 을 반환하지 않습니다 .
답변
파이썬 2 :
import urlparse
url = 'http://foo.appspot.com/abc?def=ghi'
parsed = urlparse.urlparse(url)
print urlparse.parse_qs(parsed.query)['def']
파이썬 3 :
import urllib.parse as urlparse
from urllib.parse import parse_qs
url = 'http://foo.appspot.com/abc?def=ghi'
parsed = urlparse.urlparse(url)
print(parse_qs(parsed.query)['def'])
parse_qs
값 목록을 반환하므로 위의 코드가 인쇄 ['ghi']
됩니다.
답변
이 솔루션이 아직 여기에 있지 않다는 것에 놀랐습니다. 사용하다:
request.GET.get('variable_name')
이렇게하면 “GET”사전에서 변수를 “가져오고”변수가 있으면 ‘variable_name’값을, 존재하지 않으면 None 객체를 반환합니다.
답변
import urlparse
url = 'http://example.com/?q=abc&p=123'
par = urlparse.parse_qs(urlparse.urlparse(url).query)
print par['q'][0], par['p'][0]
답변
파이썬> 3.4
from urllib import parse
url = 'http://foo.appspot.com/abc?def=ghi'
query_def=parse.parse_qs(parse.urlparse(url).query)['def'][0]
답변
furl이라는 새로운 라이브러리가 있습니다. 이 라이브러리가 url 대수를 수행하는 데 가장 비열한 것으로 판명되었습니다. 설치하기 위해서:
pip install furl
암호:
from furl import furl
f = furl("/abc?def='ghi'")
print f.args['def']
답변
나는 이것이 조금 늦었다는 것을 알고 있지만 오늘 여기에서 나 자신을 발견 한 후에 이것은 다른 사람들에게 유용한 대답이라고 생각했습니다.
import urlparse
url = 'http://example.com/?q=abc&p=123'
parsed = urlparse.urlparse(url)
params = urlparse.parse_qsl(parsed.query)
for x,y in params:
print "Parameter = "+x,"Value = "+y
parse_qsl ()을 사용하면 “데이터가 이름, 값 쌍의 목록으로 리턴됩니다.”
답변
당신이 언급하는 URL은 쿼리 유형이며 요청 객체는 쿼리 인수를 얻기 위해 인수 라는 메소드를 지원합니다 . self.request.get('def')
객체에서 직접 가치를 얻으 려고 할 수도 있습니다 .