【问题标题】:Using named url patterns throws error in Django 1.4在 Django 1.4 中使用命名的 url 模式会引发错误
【发布时间】:2012-08-21 21:44:48
【问题描述】:

我在我的 Django 应用程序中使用命名的 url 模式,但它失败了,我不知道为什么。我已关注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。

【问题讨论】:

标签: python django


【解决方案1】:

您需要使用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 模板标签,你可以只使用视图的路径,即 {% url "app.views.myview" %}

【讨论】:

  • 谢谢。认为它必须是这样简单的东西。一定要记得更彻底地 RTFM....
猜你喜欢
  • 2012-11-08
  • 1970-01-01
  • 1970-01-01
  • 2016-04-11
  • 2021-08-11
  • 1970-01-01
  • 2020-07-25
  • 2019-07-03
  • 1970-01-01
相关资源
最近更新 更多