2016-05-31 5 views
-1

私のURL:DjangoのURL - URLが似ていると、どのビューが最初に表示されますか?

/テスト/ 1/24-25-06-2016/

url(r'^test/(?P<item>\w+)/(?P<added>[-\w]+)/$', ItemView.as_view(), name='item'), 
url(r'^test/(?P<item>\w+)/24-25-06-2016/$', ItemViewOther.as_view(), name='item-other'), 

views.py

class ItemView(FormView): 
    def dispatch(self, request, *args, **kwargs): 
     if not int(self.kwargs['item']) in [1, 2, 3]: 
      raise Http404 
     if not self.kwargs['added'] in [ 
      '20-21-06-2016', 
      '22-23-06-2016', 
     ]: 
      raise Http404 

私は404を取得するのはなぜ?私は思いますItemViewOtherビューを返す必要があります。

+1

デバッグヘルプ(「なぜこのコードは機能していませんか?」)には、目的の動作、特定の問題またはエラー、および質問自体に再現するのに必要な最短コードが含まれている必要があります。明確な問題文がない質問は、他の読者にとって有用ではありません。参照:[mcve] – Sayse

答えて

2

Djangoは常に順番に一致します。 [-\w]+24-25-06-2016と一致しているため、最初のパターンが使用されます。

+0

どうすればこの問題を回避できますか?したがって、この '/ test/1/24-25-06-2016 /' urlは 'ItemViewOther'を返さなければなりません –

+0

それから最初に入れてください。 –

関連する問題