Problème d'inclusion d'urls

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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 !

Mon projet : OpenPlane, un utilitaire en Java pour les pilotes, les vrais !

+0 -0

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.

Édité par WinXaito

+1 -0
Auteur du sujet

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

Mon projet : OpenPlane, un utilitaire en Java pour les pilotes, les vrais !

+0 -0

Par contre, quelle version de Django utilises-tu ?

Le cours disponible sur Zeste de Savoir ne porte que sur la version 1.5. Par contre, la documentation officielle de Django est une très bonne ressource.

+0 -0
Auteur du sujet

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 !).

Édité par Wizix

Mon projet : OpenPlane, un utilitaire en Java pour les pilotes, les vrais !

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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