我有几个问题理解如何redirect
或更确切地说reverse
是如何工作时遇到了一些问题。
在主要的 urls.py 我有:
from django.conf.urls import patterns, include, url
from django.views.generic.simple import redirect_to
urlpatterns = patterns('',
url(r'^$', redirect_to, {'url': '/monitor/'}),
url(r'^monitor/', include('monitor.urls')),
)
并且在monitors.urls
我有:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('monitor.views',
(r'^$', 'index'),
(r'^abc/(?P<id>.*$)', 'abc'),
)
当您打电话时,/monitor
我想将其重定向到/monitor/abc
所以我这样做了:
def index(request):
return redirect("abc")
def abc(render, id=None):
return render_to_response("monitor/list.htmld", {})
但我有一个NoReverseMatch
例外。但是当我这样做时:
def index(request):
return redirect("abc/")
然后它突然起作用了。
我无法完全理解为什么。为什么reverse
失败abc
但没有失败abc/
?以及如何reverse
知道重定向也应该包括在内monitor/
?如果我在主 urls.py 中有另一个名为的应用程序xyz
,它也有一个abc
视图怎么办?