我目前正在通过Django Tutorial (Step 3)工作,并坚持使用“解耦URLconf”这一部分。
我尝试做的是设置一个捕获lnadmin /的URL模式,重定向到django admin,最后另一个重定向到另一个文件中包含的其他模式的catch-all。
这是我的mysite / urls.py:
from django.conf.urls import patterns, include, url
from django.contrib import admin
admin.autodiscover()
urlpatterns = patterns('',
url(r'^lnadmin/', include(admin.site.urls)), #match admin
url(r'^test/', include('lnapp.urls')), #match test, should be a catch-all later
)
这里是lnapp / urls.py,它应该匹配hash /(任何)/:
from django.conf.urls import patterns, include, url
urlpatterns = patterns('lnapp.views',
url(r'^hash/(?P<hash>.+)/$', 'hash'), #match part to load from hash
)
之前我在主url.py中有这个模式,它按预期工作。 现在发生的是当我打开(mydomain)/ lnadmin /时,它尝试访问lnapp.views.hash(无法导入lnapp.views.hash,因为尚未定义视图)。
这对我没有任何意义,因为lnadmin /应与第一个模式匹配,并且/ lnadmin /与test / hash /(nothing)/不匹配。只要我在lnapp / urls.py中注释掉一个网址,它就会按预期重定向到管理员。
交换主url.py中的两个网址都没有效果。
答案 0 :(得分:0)
我自己的问题的答案是:即使对于不匹配的网址,您也必须定义视图,否则它将失败。