J'ai un modèle d'URL comme ceci:Raise 404 et continuer la chaîne URL
urlpatterns = (
url(r'^$', list_titles, name='list'),
url(r'^(?P<tag>[a-z\-0-9]+?)/$', list_titles, name='filtered-list'),
url(r'^(?P<title>\S+?)/$', show_title, name='title'),
)
Le match filtered-list
et title
les mêmes choses.
S'il y a une liste de choses disponibles correspondant au tag
dans filtered-list
, je veux que list_titles
s'éteigne. Mais s'il n'y a pas de tag
correspondant, je veux ramener le tout au processeur d'URL, donc show_title
se déclenche.
S'il n'y a pas de titre correspondant, j'élèverai un 404 approprié là.
Je sais que je peux le faire depuis l'intérieur de la vue ... mais il est un peu difficile d'avoir à câbler le processus dans la vue. Je voudrais que l'ordre de l'URL décide de ce qui est choisi en premier et de ce que cela signifie.
merci pour get_list_or_404 mais ce n'est pas une réponse à ma question. Je dis que si je ne peux pas obtenir une liste de titres basée sur l'URL, je veux que l'URL soit réévaluée par le reste des URL. – Oli
Hmm ... Je vois. Votre question initiale n'était pas très claire. Rappelez-vous que l'urls.py est juste du code Python, donc vous pouvez y faire une sorte de validation. Donnez-moi une minute et je vais éditer ma réponse. –
'raise Http404' devrait probablement être' raise Http404() ': https://docs.djangoproject.com/fr/2.0/topics/http/views/#the-http404-exception –