2

Django アプリで名前付き URL パターンを使用していますが、失敗しており、その理由がわかりません。ドキュメントに従っていますが、アプリが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 を使用しています。ティア。

4

1 に答える 1

3

パラメータを利用するには、関数を使用urlする必要があります。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" %}

于 2012-08-21T21:47:05.217 に答える