Skip to main content
 首页 » 编程设计

python之使用命名的 url 模式会在 Django 1.4 中引发错误

2024年08月30日26cmt

我在我的 Django 应用程序中使用命名的 url-patterns,但它失败了,我不知道为什么。我关注了docs但我的应用在读取 urls.py 时出错。

这有效:

urls.py

from django.conf.urls import patterns 
from www.apps.newsletter.models import Newsletter 
from www.apps.newsletter.views import index, detail 
 
urlpatterns = patterns('', 
    (r'^vol(?P<q_vol>\d+)/no(?P<q_no>\d+)/(?P<q_slug>[^.*]+)/$', detail), 
    (r'^vol(?P<q_vol>\d+)/no(?P<q_no>\d+)/$', index), 
    (r'^vol(?P<q_vol>\d+)/$', index), 
    (r'^$', index), 
) 

但这失败:

urls.py

from django.conf.urls import patterns 
from www.apps.newsletter.models import Newsletter 
from www.apps.newsletter.views import index, detail 
 
urlpatterns = patterns('', 
    (r'^vol(?P<q_vol>\d+)/no(?P<q_no>\d+)/(?P<q_slug>[^.*]+)/$', detail, name='newsletter-detail'), 
    (r'^vol(?P<q_vol>\d+)/no(?P<q_no>\d+)/$', index), 
    (r'^vol(?P<q_vol>\d+)/$', index), 
    (r'^$', index), 
) 

我想使用命名的 url 模式(所以我可以在我的模板中使用 {% url %}),但 Django 似乎不想玩得很好。有任何想法吗?我所做的只是添加 arg name="" 并导致错误:

SyntaxError at /newsletter/ 
 
invalid syntax (urls.py, line 6) 

这个 urls.py 被父 urls.py 引用:

urlpatterns = patterns('', 
    url(r'^grappelli/', include('grappelli.urls')), 
    url(r'^admin/', include(admin.site.urls)), 
    url(r'^software/', include('www.apps.software.urls')), 
    url(r'^newsletter/', include('www.apps.newsletter.urls')), 
) 

我使用的是 Django 1.4 版。 TIA。

请您参考如下方法:

您需要使用 the url function使用 name 参数:

url(r'^vol(?P<q_vol>\d+)/no(?P<q_no>\d+)/(?P<q_slug>[^.*]+)/$', detail, name='newsletter-detail'), 

换句话说,使用元组和url函数是有区别的。

顺便说一句,你不需要命名 url 模式来使用 url 模板标签,你可以只使用 View 的路径,即 {% url "app. View .myview"%}