为什么django不会认出我的网址?

时间:2013-06-25 20:51:25

标签: django django-urls

我的用户模型中的urls.py文件存在问题。当我访问localhost:5000 / users /时,我得到了预期的页面,但当我转到localhost:5000 / users / 1时,我会看到一个页面说明

Page not found (404)
Request Method:     GET
Request URL:    http://127.0.0.1:5000/users/1

Using the URLconf defined in ng_blog.urls, Django tried these URL patterns, in this order:

    ^users/$

但是我的urls.py似乎被恰当地定义了。

urlpatterns = patterns('',
    url(
        r'^$', 
        UserList.as_view(),
        name='user_list'
    ),
    url(
        r'^(?P<username>\w+)/$', 
        UserDetail.as_view(),
        name='user_detail'
    ),
)

根urls.py文件是

urlpatterns = patterns('',
    url(r'^blog/$', include('blog.urls')),
    url(r'^users/$', include('users.urls')),
)

4 个答案:

答案 0 :(得分:4)

在你的root urls.py中,更改

url(r'^users/$', include('users.urls')),

url(r'^users/', include('users.urls')),

$表示网址格式的结束。因此这个问题。

另外,更改

 r'^(?P<username>)/$',

 r'^(?P<username>\w+)/$',

答案 1 :(得分:1)

您的部分问题是,您已将user_detail视图定义为仅匹配以/字符结尾的网址,然后在您的网址失败中未使用。并且(正如其他人所说),您的username模式实际上并不匹配任何字符。但是从尝试的模式列表中,我怀疑您的ng_blog.urls文件中可能存在其他问题。

答案 2 :(得分:1)

我认为您需要将(?P<username>)替换为(?P<username>[^/]+)(或其他适当的模式)。

答案 3 :(得分:1)

尝试r'^(?P \ d +)/ $'。

d +将确保匹配1个或更多数字。