为链接构建完整网址的pythonic方法是什么?

时间:2017-04-28 21:10:10

标签: python django

我正在寻找一种在python3中构建url的方法,而不必进行字符串连接。我知道我可以

import requests
url_endpoint = 'https://www.duckduckgo.com'
mydict = {'q': 'whee! Stanford!!!', 'something': 'else'}
resp = requests.get(url_endpoint, params=mydict)
print(resp.url) # THIS IS EXACTLY WHAT I WANT

from requests import Request, Session
s = Session()
req = Request('GET',  url, params={'q': 'blah'})
print(req.url)
# I didn't get this to work, but from the docs 
#   it should build the url without making the call

url = baseurl + "?" + urllib.urlencode(params)

我喜欢请求库智能地决定删除?如果不需要,但该代码实际上发出了一个完整的GET请求,而不仅仅是构建一个全文url(我计划转储到一个HTML标签)。我正在使用django,但在核心库中我没有看到任何帮助。

1 个答案:

答案 0 :(得分:0)

Django附带QueryDicts,基本上可以做你想做的一切。

def make_url(url, args=None):
    query = QueryDict(mutable=True)
    query.update(args or {})
    return '{}{}{}'.format(url, '?' if query else '', query.urlencode())

它支持每个参数的多个值,就像您在网址中遇到的那样:example.com/foo?a=1&a=2&a=3