Django了解网址

时间:2014-06-23 23:09:51

标签: python django django-urls

在我的核心urls.py中,我有

url(r'^student/', include('studentportal.urls')),

在studentportal.urls中,我有这个网址

    url(r'^project/(?P<project_id>[0-9])/edit/$', views.editproject, name='editproject'),   
    url(r'^project/(?P<project_id>[0-9])/upload/$', views._upload, name='upload_document'),
    url(r'^project/(?P<project_id>[0-9])/$', views.viewproject, name='viewproject'),
    url(r'^download/(?P<document_id>[0-9])/', views.download, name='download_document'),

在此行渲染模板时会弹出NoReverseMatch错误

<p><a class="btn btn-default" href="{% url 'viewproject' p.id %}" role="button">View details »</a></p> 

检查这些网址

2 pattern(s) tried: ['student/project/(?P<project_id>[0-9])/$', '$project/(?P<project_id>[0-9])/$']

我很确定错误是我使用网址的方式而不是视图,也不是模板。此外,在urlpatterns末尾排除'$'会导致NoReverseMatch错误。即使我已经阅读了关于urlpatterns的django文档。
'''表示行的开头
'''表示网址应该在这里结束 '(?P&lt; named_variable&gt;)'用于从网址中捕获变量。

那么为什么当第一个模式与'viewproject' with arguments '('10',)'匹配时,模式不匹配?

1 个答案:

答案 0 :(得分:3)

要匹配非个位数字,请更改为:

url(r'^project/(?P<project_id>[0-1000])/edit/$

url(r'^project/(?P<project_id>[0-9]+)/edit/$