Bonjour,

Je commence à apprendre Django afin de refaire la refonte de mon site :-)

Pour cela, je me sers de divers scripts disponibles pour la partie "blog",
comme par exemple :
https://github.com/nathanborror/django-basic-apps/tree/master/basic/blog

J'aimerai que l'URL d'un article soit de la sorte :
http://www.monsite.fr/blog/"categorie"/"slug de l'article"
En remplaçant "categorie" par le slug de la catégorie dans laquelle est
l'article, et "slug de l'article" par le slug de l'article ^^

Pour l'instant j'ai ceci dans mes urls : 
[code]
url(r'^([\w-]+)/(?P<slug>[\w-]+)/$',
        'django.views.generic.list_detail.object_detail',
        dict(
            queryset=Post.online_objects.all(),
            slug_field='slug',
        ),
        name='blog_post',
    ),
[/code]

Et voici la méthode get_absolute_url() issue du modèle des articles
permettant de récupérer l'URL de l'article afin de l'afficher en cliquant
dessus :
[code]
@models.permalink
def get_absolute_url(self):
    return ('blog_post', [self.category.slug, self.slug])
[/code]

Alors j'arrive bien à afficher mon article avec l'url souhaitée, par
exemple : /blog/django/sortie-de-django-13.
Cependant, si je modifie à la main la catégorie, par exemple
/blog/djnafsfs/sortie-de-django-13, et bien l'article s'affiche quand
même, ce qui au final est normal et concorde bien avec la regex dans les
URLS.
Cependant j'aimerai dans ce cas là rediriger vers une erreur 404, ou au
pire faire une redirection automatique vers la bonne url (comme le font
certains CMS).
Bref, comment vérifier que la catégorie dans l'url est bien correcte ?

Niveau référencement, est-ce optimal d'afficher le nom de la catégorie
dans l'url, ou juste le slug de l'article suffit ? (dans ce cas là je me
prends la tête pour rien ^^)

Merci d'avance pour votre aide :)

(PS : je risque de revenir si je rencontre d'autres problèmes, vu que je
débute avec Django :p)
_______________________________________________
django mailing list
[email protected]
http://lists.afpy.org/mailman/listinfo/django

Répondre à