在django中使用带有查询参数的url上的resolve

时间:2014-09-21 13:56:56

标签: django url

在没有查询参数的网址上使用resolve会导致

resolve('/tracking/url/')
ResolverMatch(func=<function tracking_url_url at 0x028D62B0>, args=(), kwargs={}, url_name='tracking-url-url', app_name='None', namespace='')

在带有查询参数的网址上使用解析(网址在浏览器中有效)会导致Resolver404错误

resolve('/tracking/url/?url=home')
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "C:\Python27\lib\site-packages\django\core\urlresolvers.py", line 476, in resolve
    return get_resolver(urlconf).resolve(path)
  File "C:\Python27\lib\site-packages\django\core\urlresolvers.py", line 352, in resolve
    raise Resolver404({'tried': tried, 'path': new_path})

网址条目是

url(r'^tracking/url/$', 'myauth.views.tracking_url_url', name='tracking-url-url'),

使用查询参数解析网址的最佳方法是什么,并获得qs的dict,就像我从常规请求获取它一样,例如request.GET.get('url')

感谢。

1 个答案:

答案 0 :(得分:3)

resolve()reverse()不适用于查询参数。

您可以做的是:解析网址,然后附加您的查询参数

"%s?url=home", resolve('/tracking/url/')see this answer

如果您想使用request.GET.get(...),为什么不重定向到使用request.GET.get(...)的视图?

from django.shortcuts import redirect
from django.core.urlresolvers import resolve

def someViewFunction():
    ...
    url = "%s?url=home", resolve('/tracking/url/')
    return redirect(url)

如果这样做无效,请尝试指定您的问题。