Bienvenue sur IndexError.

Ici vous pouvez poser des questions sur Python et le Framework Django.

Mais aussi sur les technos front comme React, Angular, Typescript et Javascript en général.

Consultez la FAQ pour améliorer vos chances d'avoir des réponses à vos questions.

Django, urlpatterns ne prend en compte qu'un élément de la liste

+4 votes

Grand débutant en python et Django, je suis bloqué sur la gestion d'url de mon app.

J'ai inclus le résolveur de mon app dans le fichier 'urls.py' du projet :

urlpatterns = patterns('',
# Examples:
# url(r'^$', 'countereport.views.home', name='home'),
# url(r'^blog/', include('blog.urls')),

url(r'^admin/', include(admin.site.urls)),
url(r'^web/$', include('web.urls')),
)

Puis je défini mes urls dans le fichier 'web/urls.py' de l'app :

from django.conf.urls import url
from . import views

urlpatterns = [
url(r'^$', views.index, name='case'),
url(r'^test/$', views.test, name='test'),
]

Si la page index s'affiche bien sur 'localhost:8000/web/' pas moyen d'accéder aux autres vues :

Using the URLconf defined in countereport.urls, Django tried these URL patterns, in this order:
^admin/
^web/$
The current URL, test, didn't match any of these.

J'ai également essayé de la manière suivante :

from django.conf.urls import url

from . import views

urlpatterns = (
'',
url(r'^$', 'views.index', name='case'),
url(r'^test/$', views.test, name='test'),
)

Après de nombreuses relecture de la doc Django, je ne comprend pas pourquoi les autres url ne sont pas accessibles. Vous auriez une idée du pourquoi ?

demandé 20-Jul-2015 par Stiquemou (206 points)
reclassée 20-Jul-2015 par max

1 Réponse

+4 votes
 
Meilleure réponse

Il y a un dollar en trop dans ta regexp pour matcher les routes de /web

url(r'^web/$', include('web.urls')),

Devrait etre

url(r'^web/', include('web.urls')),

Le caractere $ dans ta regexp indique la fin de la chaine de caractere, tu indiques donc a django de ne matcher que /web et pas /web/xx ou /web/yy

Comme le précise la doc pour l'exemple qu'ils donnent :

Note that the regular expressions in this example don’t have a $ (end-of-string match character) but do include a trailing slash.

répondu 20-Jul-2015 par jc (2,704 points)
sélectionné 23-Jul-2015 par Stiquemou

il y a un o en trop dans ton pour :-) biz' ;)

haha, j'édite :)

Manques des s aussi mais laisses tomber <:°)

(et des accents, mais je les drop volontairement, le clavier qwerty sous OSx est une plaie pour ca :) )

...