在一个应用程序的urls.py中我有:
urlpatterns = patterns('app.views',
url(r'^products/$', products, name="products"),
url(r'^$', index, name="index"),
)
在基础项目urls.py中我有:
urlpatterns = patterns('',
(r'^$', include('app.urls')),
(r'^admin/', include(admin.site.urls)),
)
为什么http://127.0.0.1:8000/ - 适用于app.views.index方法 而http://127.0.0.1:8000/products/ - 返回404错误并且未在网址路由中定义?
已经花了一些时间在上面找不到解决方案,也许有一些我想念的简单......
答案 0 :(得分:12)
您的基本网址应为:
urlpatterns = patterns('',
(r'^', include('app.urls')),
(r'^admin/', include(admin.site.urls)),
)
答案 1 :(得分:5)
'$'仅用于网址。如果你看一下doc,它会告诉你在使用include()时不要使用'$'。
答案 2 :(得分:4)
urlpatterns = patterns('',
(r'^', include('app.urls')),
(r'^admin/', include(admin.site.urls)),
)
工作正常。
答案 3 :(得分:0)
在Django URL中使用path()时,我遇到了同样的问题。 简单的解决方法是,您不必在路径的末尾使用斜杠,否则Django将把该URL作为完整的URL,并且不会转到下一个urls.py文件
//this will not work
path('/', include('app.urls'), name='profile_page')
// but this will work
path('', include('app.urls'), name='profile_page')