[python] URL에서 매개 변수 검색

다음과 같은 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']됩니다.

다음은 Python 3 설명서입니다.


답변

이 솔루션이 아직 여기에 있지 않다는 것에 놀랐습니다. 사용하다:

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')객체에서 직접 가치를 얻으 려고 할 수도 있습니다 .