我在Django中制作了一些URL,包括它们等等。一切看起来都不错,但无论我做什么,我总会在一些最简单的URL上得到404.
例如,我可以浏览myapp/0
abd myapp/1/details/
,但我会在myapp/foo
所以这是我的urlconf:
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^myapp/', include('myapp.urls')),
]
和myapp urlconf:
urlpatterns = [
url(r'^foo/$ ', FooView.as_view()),
url(r'^(?P<bar_id>\d+)/$', BarByIdView.as_view()),
url(r'^(?P<bar_id>\d+)/details/$', BarDetailsByIdView.as_view()),
]
当我试试myapp/foo
Django向我展示了以下网址列表:
^admin/
^myapp/ ^foo/$
^myapp/ ^(?P<bar_id>\d+)/$
^myapp/ ^(?P<bar_id>\d+)/details/$
答案 0 :(得分:3)
在myapp.conf
中,您在/
模式的末尾添加了url
url(r'^foo/$ ', FooView.as_view()
必须使用/myapp/foo/
而不是/myapp/foo
来查看,因为第一个匹配正则表达式而第二个不匹配。
答案 1 :(得分:2)
您的网址为/myapp/foo/
,而不是/myapp/foo
。请注意尾部斜杠。
如果您希望两者都有效,请确保将APPEND_SLASH
setting设置为True并启用CommonMiddleware
。