Problème d'inclusion d'urls

Le problème exposé dans ce sujet a été résolu.

Hello,

J'essaye de me mettre à Django que j'ai découvert ce matin et qui me semble très intéressant. Je suis donc le cours disponible sur ce site. J'en suis à la partie sur les urls. Voici à quoi ressemble mon fichier crepes_bretonnes/urls.py :

1
2
3
4
5
from django.conf.urls import include, url

urlpatterns = (
    url(r'^blog/$', include('blog.urls'))
)

et mon fichier crepes_bretonnes/blog/urls.py :

1
2
3
4
5
from django.conf.urls import patterns, url

urlpatterns = patterns('',
    url(r'^accueil/$', 'blog.views.home')
)

Quand je me rend sur la page http://localhost:8000/accueil/ j'ai le droit au message ImproperlyConfigured at /accueil/. J'essaye de me rendre sur http://localhost:8000/blog/accueil/ mais j'ai le même message.

Je ne comprend pas où est mon erreur, j'espère (et je n'en doute pas :D ) que vous allez trouver la solution.

Merci de votre aide !

Ah je pense savoir d’où vient le problème,

dans crepes_bretonnes/urls.py tu devrais supprimer le signe $ car l'url n'est pas terminé, et dans crepes_bretonnes/blog/urls.py supprimer le ^ car l'url ne commence pas.

Edit: Je viens de vérifier dans le tuto c'est bien cela. Voici ce qu'il nous est dit dans le tutoriel:

Il s'agit d'expressions régulières (ou « regex ») qui permettent de créer des URL plus souples. Il est généralement conseillé de maîtriser au moins les bases des regex pour pouvoir écrire des URL correctes. Dans ce cas-ci :

  • ^ indique le début de la chaîne (autrement dit, il ne peut rien y avoir avant /accueil) ;
  • ? indique que le caractère précédent peut être absent ;
  • $ est le contraire de ^, il indique la fin de la chaîne.
+1 -0

J'aurais presque mis ma main à couper que c'était la bonne solution… Mais malheureusement ça ne change rien.
Par contre, ça m'a fait remarqué que j'avais une faute dans mon crepes_bretonnes/urls.py, il n'y a effectivement pas de $ à la fin. Par contre il y a bien un ^ au début de l'url dans crepes_bretonnes/blog/urls.py

Je viens de checker la documentation de la 1.8 et il n'y a effectivement pas de différences :

1
2
3
4
5
6
7
8
from django.conf.urls import include, url

urlpatterns = [
    # ... snip ...
    url(r'^community/', include('django_website.aggregator.urls')),
    url(r'^contact/', include('django_website.contact.urls')),
    # ... snip ...
]

Par contre, en procédant ainsi :

1
2
3
4
5
from django.conf.urls import include, patterns, url

urlpatterns = patterns('',
    url(r'^blog/', include('blog.urls'))
)

Ça fonctionne… mais que pour /blog/accueil en allant sur /accueil je n'ai une erreur comme quoi la page n'existe pas. Mais en modifiant ainsi :

1
2
3
4
5
from django.conf.urls import include, patterns, url

urlpatterns = patterns('',
    url(r'(^blog/)?', include('blog.urls')),  # remarquez le ?
)

Tout fonctionne nickel !

Merci de votre aide !

EDIT : et tout ça m'a fait remarqué que je n'étais pas sur la dernière monture de Django, ce qui est chose faite (les urls sont bien plus simple à gérer !).

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte