1

urlpatternsのさまざまな部分で記述されているURLを読み込もうとすると、同じビューが読み込まれます。明らかに、私が使用しているurlpatternsにエラーがありますが、見つかりません。

これが最初のurls.pyファイルです:

urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^$', home),
url(r'^comments/', include('django.contrib.comments.urls')),
(r'^media/(?P<path>.*)$', 'django.views.static.serve', {
    'document_root': settings.MEDIA_ROOT}),
url(r'^episodes/', include('episodes.urls')),
url(r'^news/', news),
url(r'', include('zinnia.urls')),))

そしてここにepisodes.urlsのurlpatternsがあります:

urlpatterns = patterns('',
    (r'$', seasons_list),
    (r'(?P<season>\d{1})/$', episodes_by_season),
    (r'(\d{1})/(\d{1})/$', episode),
)

「/episodes/1」や「/episodes/ 1/2」などのURLを読み込もうとするたびに、djangoはseasons_listビューのみを使用します。

4

1 に答える 1

1

これは、すべてのURLに文字列の終わりがあるため、常に最初のパターンと一致するためです。含まれているURLconfは一致後にのみ部分を取得するため、それらすべてに開始アンカーを追加します。

Djangoがinclude()django.conf.urls.include())に遭遇すると、その時点までに一致したURLの部分を切り取り、残りの文字列を含まれているURLconfに送信してさらに処理します。

urlpatterns = patterns('',
    (r'^$', seasons_list),
    (r'^(?P<season>\d{1})/$', episodes_by_season),
    (r'^(\d{1})/(\d{1})/$', episode),
)
于 2012-12-12T05:35:39.793 に答える