Django-fr

Forum

#1 01-01-2011 18:40:05

beegees
Membre
Inscription : 26-12-2010
Messages : 66

Quelle est l'utilité de reserve() ?

Bonjour tout le monde,

Je me demandais à quoi servait la fonction reverse() ?

J'ai par exemple ce code :

return HttpResponseRedirect(reverse('app.auth_views.check_login'))

J'ai bien sûr été voir la doc officielle et j'ai trouvé ceci :

The reverse() function can reverse a large variety of regular expression patterns for URLs, but not every possible one. The main restriction at the moment is that the pattern cannot contain alternative choices using the vertical bar ("|") character. You can quite happily use such patterns for matching against incoming URLs and sending them off to views, but you cannot reverse such patterns.

ça ne me parle pas (même après traduction en français).

Merci d'avance pour votre aide.

beegees

Hors ligne

#2 01-01-2011 18:50:05

Jérémie Ducastel
Membre
Inscription : 11-08-2010
Messages : 16

Re : Quelle est l'utilité de reserve() ?

Cela permet de "générer" une url à partir des variables qui la
composent, en utilisant les regex définies dans urls.py (et donc en
evitant de dupliquer du code).

Si tu veux par exemple definir une methode permalink() dans un objet
modèle qui renverra l'url de lecture pour cette objet :

dans ton urls.py :

url(r'my_objects/([0-9]+)/$', 'my_object', name='my_object'),

dans ton models.py :

class MyObject(models.Model):

    def permalink(self):
        return reverse('my_object', self.id)

Ce qui te permettra d'utiliser dans un template par exemple :

<a href="{{ object.permalink }}">Object {{ object.id }}</a>

Le tout étant déclinable pour chaque action possible sur tes objets
modèles, au delà de la visualisation. Et ce n'est qu'un exemple.

Le 1 janvier 2011 18:40, beegees <ddubois2 _AT_ gmail.com> a écrit :
> Bonjour tout le monde,
>
> Je me demandais à quoi servait la fonction reverse() ?
>
> J'ai par exemple ce code :
>
>

return
> HttpResponseRedirect(reverse('app.auth_views.check_login'))

>
> J'ai bien sûr été voir la doc officielle et j'ai trouvé ceci :
>
> [quote]The reverse() function can reverse a large variety of regular
> expression patterns for URLs, but not every possible one. The main
> restriction at the moment is that the pattern cannot contain alternative
> choices using the vertical bar ("|") character. You can quite happily use
> such patterns for matching against incoming URLs and sending them off to
> views, but you cannot reverse such patterns.
> [/quote]
>
> ça ne me parle pas (même après traduction en français).
>
> Merci d'avance pour votre aide.
>
> beegees
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

#3 01-01-2011 19:08:34

beegees
Membre
Inscription : 26-12-2010
Messages : 66

Re : Quelle est l'utilité de reserve() ?

Bonjour Jérémie,

Merci pour ta réponse.

Je ne comprends pas, mon code n'est pas un regex, on ne devrait donc pas utiliser reserve ?

Merci encore pour l'aide.

beegees

Hors ligne

#4 01-01-2011 21:15:35

quinode
Membre
Lieu : Auvergne
Inscription : 14-10-2010
Messages : 89
Site Web

Re : Quelle est l'utilité de reserve() ?

Avec ou sans expression reguliere, ça sert :
Dans urls.py, tu définis les URLs que l'internaute verra dans la barre d'adresse et tu les fais correspondre avec le nom des vues/views .
Tes URLS, elles peuvent changer pour x raisons, donc la manière durable de mentionner les liens c'est avec reverse('le_nom_de_la_vue') parceque le nom de la vue est interne à ton code, et n'a pas de raison de changer
(sauf si tu veux te mettre la zone tout seul mais bon)

Hors ligne

Pied de page des forums