Bienvenue sur IndexError.

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

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 (210 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 :) )

...