我有几个问题理解如何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视图怎么办?