How do I construct a Django reverse/url using query args?

后端 未结 6 480
长发绾君心
长发绾君心 2020-12-13 04:25

I have URLs like http://example.com/depict?smiles=CO&width=200&height=200 (and with several other optional arguments)

My urls.py contains:

ur         


        
6条回答
  •  猫巷女王i
    2020-12-13 05:03

    The answer that used urllib is indeed good, however while it was trying to avoid strings concatenation, it used it in path + '?' + urllib.urlencode(kwargs). I believe this may create issues when the path has already some query parmas.

    A modified function would look like:

    def url_with_querystring(url, **kwargs):
        url_parts = list(urlparse.urlparse(url))
        query = dict(urlparse.parse_qsl(url_parts[4]))
        query.update(kwargs)
        url_parts[4] = urllib.urlencode(query)
        return urlparse.urlunparse(url_parts)
    

提交回复
热议问题