我正在使用reverse_lazy,如下所示
def index:
if firstTimeLogin == 0:
response = HttpResponseRedirect(reverse_lazy('abc', args={'cid': 0}))
else:
response = HttpResponseRedirect(reverse_lazy('abc', args={'cid': 1}))
abc view
def abc(request, userid = None, cid =1 ):
return HttpResponse(cid)
urls.py
url(r'^abc/$', views.abc, name='abc'),
url(r'^abc/(?P<userid>.*)/$', views.abc, name='abc'),
url(r'^abc/(?P<cid>.*)/$', views.abc, name='abc'),
现在当我通过reverse_lazy重定向到def abc时,我得到的网址如下:
baseurl/appname/abc/cid
,在这里我不知道如何获取cid的值。
如果需要其他方法,请更正。我只需要将一些参数传递给reverse_lazy,我想在def abc
更新
参考罗马人所说的话: 我更新了: urls.py as:
url(r'^abc/(?P<cid>.*)/$', views.abc, name='abcfirst')
和 重定向为:
response = HttpResponseRedirect(reverse_lazy('abcfirst', args={'cid': 1}))
我仍然无法通过reverse_lazy访问我发送的参数。
答案 0 :(得分:2)
您有两个名称相同的网址,并且使用相同的参数(相同的正则表达式)。
你不能将这两者结合起来让视图同时兼顾,这不是django的工作原理。
你要么
但不管怎样,你不能为不同的网址使用相同的名称。
答案 1 :(得分:0)
在args
功能:
kwargs
替换为reverse_lazy
response = HttpResponseRedirect(reverse_lazy('abcfirst', kwargs={'cid': 1}))