2010-11-24 4 views
2

私は本(Practical Django Projects第2版)に従っています。私は理解できないエラーに遭遇しました。Djangoで{%url%}を使用している場合のNoReverseMatch

私はこのエラーを取得する:ここで/ブログ/

Caught NoReverseMatch while rendering: Reverse for 'coltrane_category_list' with arguments '()' and keyword arguments '{}' not found.

で TemplateSyntaxErrorは{%のurl%}を使用して、私のテンプレートのコードです:ここで

<li id="main-nav-entries"> 
     <a href="{% url coltrane_entry_archive_index %}">Entries</a> 
    </li> 

は私のURLの設定です:

entry_info_dict = { 
    'queryset': Entry.objects.all(), 
    'date_field': 'pub_date', 
} 

urlpatterns = patterns('django.views.generic.date_based', 
    (r'^$', 'archive_index', entry_info_dict, 'coltrane_entry_archive_index'), 
    (r'^(?P<year>\d{4})/$', 'archive_year', entry_info_dict, 'coltrane_entry_archive_year'), 
    (r'^(?P<year>\d{4})/(?P<month>\w{3})/$', 'archive_month', entry_info_dict, 'coltrane_entry_archive_month'), 
    (r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/$', 'archive_day', entry_info_dict, 'coltrane_entry_archive_day'), 
    (r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$', 'object_detail', entry_info_dict, 'coltrane_entry_detail'), 
) 

エラーは何を意味しますか?十分な議論をしていないのですか? {%url%}はどのように機能しますか?私の理解から、URL設定を見て、一致するキーワードを見つけて、URL設定で一致するキーワードに基づいてURLを返すでしょう。

答えて

7

パターンの名前を正しく登録するには、パターンにurl関数を使用する必要があります。 Django documentation on naming url patternsを参照してください。私はそれが名前付き引数としてname=を使用せずにうまくいくと思うが、私はいつもそれが私にはより明確だからに好む

urlpatterns = patterns('django.views.generic.date_based', 
    url(r'^$', 'archive_index', entry_info_dict, name='coltrane_entry_archive_index'), 
    url(r'^(?P<year>\d{4})/$', 'archive_year', entry_info_dict, name='coltrane_entry_archive_year'), 
    url(r'^(?P<year>\d{4})/(?P<month>\w{3})/$', 'archive_month', entry_info_dict, name='coltrane_entry_archive_month'), 
    url(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/$', 'archive_day', entry_info_dict, name='coltrane_entry_archive_day'), 
    url(r'^(?P<year>\d{4})/(?P<month>\w{3})/(?P<day>\d{2})/(?P<slug>[-\w]+)/$', 'object_detail', entry_info_dict, name='coltrane_entry_detail'), 
) 

は基本的に自分のパターンを変更します。