在没有查询参数的网址上使用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')
。
感谢。
答案 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)
如果这样做无效,请尝试指定您的问题。