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, parse_qs
url = 'http://foo.appspot.com/abc?def=ghi'
parsed = urlparse(url)
print(parse_qs(parsed.query)['def'])
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]
이 솔루션이 아직 여기에 있지 않다는 것에 놀랐습니다. 사용하다:
request.GET.get('variable_name')
이렇게하면 "GET"사전에서 변수를 "가져오고"변수가 있으면 'variable_name'값을, 존재하지 않으면 None 객체를 반환합니다.
파이썬> 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')
객체에서 직접 가치를 얻으 려고 할 수도 있습니다 .
def getParams(url):
params = url.split("?")[1]
params = params.split('=')
pairs = zip(params[0::2], params[1::2])
answer = dict((k,v) for k,v in pairs)
도움이 되었기를 바랍니다
urlparse 모듈은 필요한 모든 것을 제공합니다 :
urlparse.parse_qs ()
아무 것도 할 필요가 없습니다. 와 함께
self.request.get('variable_name')
메소드 (GET, POST 등)를 지정하지 않았습니다. 이것은 잘 문서화되어 있으며 이것은 예입니다
Django 템플릿을 사용한다고해서 장고가 처리기를 처리한다는 의미는 아닙니다.
순수한 파이썬에서 :
def get_param_from_url(url, param_name):
return [i.split("=")[-1] for i in url.split("?", 1)[-1].split("&") if i.startswith(param_name + "=")][0]
import cgitb
cgitb.enable()
import cgi
print "Content-Type: text/plain;charset=utf-8"
print
form = cgi.FieldStorage()
i = int(form.getvalue('a'))+int(form.getvalue('b'))
print i
Btw, I was having issues using parse_qs() and getting empty value parameters and learned that you have to pass a second optional parameter 'keep_blank_values' to return a list of the parameters in a query string that contain no values. It defaults to false. Some crappy written APIs require parameters to be present even if they contain no values
for k,v in urlparse.parse_qs(p.query, True).items():
print k
There is a nice library w3lib.url
from w3lib.url import url_query_parameter
url = "/abc?def=ghi"
print url_query_parameter(url, 'def')
ghi
참고URL : https://stackoverflow.com/questions/5074803/retrieving-parameters-from-a-url
'IT story' 카테고리의 다른 글
Rails 3.2, FATAL : 사용자에 대한 피어 인증 실패 (PG :: Error) (0) | 2020.06.23 |
---|---|
UICollectionViewCell의 콘센트가 왜없는가요? (0) | 2020.06.23 |
IIS Express 웹 서버를 시작할 수 없습니다. URL을 등록하지 못했습니다. 액세스가 거부되었습니다. (0) | 2020.06.23 |
[Vue 경고] : 요소를 찾을 수 없습니다 (0) | 2020.06.23 |
숫자가 범위 내에 있는지 우아하게 확인하는 방법은 무엇입니까? (0) | 2020.06.23 |