Python Django URL模式未捕获命名路由

Python Django URL模式未捕获命名路由,python,django,django-views,django-urls,Python,Django,Django Views,Django Urls,我在项目层面上有以下几点: urlpatterns = patterns('', url(r'^admin/', include(admin.site.urls)), url(r'^login/', include('myapp.urls')), url(r'^$', include('myapp.urls')) ) 在应用程序级别: urlpatterns = patterns('', url(r'^login/', views.login, name = '

我在项目层面上有以下几点:

urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'^login/', include('myapp.urls')),
    url(r'^$', include('myapp.urls'))
)
在应用程序级别:

urlpatterns = patterns('',
    url(r'^login/', views.login, name = 'login'),
    url(r'^$', views.home, name = 'home')
)
导航到工作正常,点击
视图。主页
函数/视图,但也会点击
视图。主页
函数/视图,而不是
视图。按预期登录
。我知道我的regex
r'^login/'
/login
URL模式匹配——我在这里做错了什么?这简直让我发疯,因为这太简单了。我对其他语言/框架中的URL路由/MVC有很多经验,但我对Django有些陌生


一个线索是导航到(模式两次)会点击
视图。登录
路由…

您的URL非常混乱。对于以“login/”开头的url和从路由开始的所有url,都包括“home”url模式。因此,以“login/”开头的URL将删除该前缀,然后在主URL模式中开始匹配。当然,当它到达那里时,它现在只包含一个空字符串,因此与空url模式匹配

您应该编辑项目URL以删除第一个“login”模式,并编辑catch all模式以删除“$”字符(您希望匹配所有前缀,而不是空字符串)


FWIW
r'^admin/'
路径也运行良好,几乎完全相同。啊,哇。那就更有意义了。。文档并没有很好地解释它。为了澄清,
home
路由应该匹配
/
(根),因此在应用程序级路由中,它应该保持为
r'^$'
?您应该编写Django路由文档:)来自Laravel/CodeIgniter,阅读Django路由文档非常糟糕。。。它一直在运行,没有很好的示例。(此处的Laravel路由文档用于比较:)。非常感谢。
urlpatterns = patterns('',
    url(r'^admin/', include(admin.site.urls)),
    url(r'', include('myapp.urls'))
)