Django-fr

Forum

#1 04-02-2009 13:26:27

Fabien Benoit
Membre
Inscription : 11-08-2010
Messages : 7

utilité de APPEND_SLASH dans django ?

Bonjour à tous,

Pour ceux qui connaissent, pourquoi diable django tiens absolument à
rajouter un slash à toutes les urls, par défaut ?

J'ai beau me creuser, je ne vois pas l'utilité, d'autant que le très
nombreux sites ne le font pas.

En plus, c'est moche smile Mais je suis curieux, quelqu'un a-t-il un avis sur
la question ?

Fabien

Hors ligne

#2 04-02-2009 13:29:17

David Thenon
Membre
Inscription : 11-08-2010
Messages : 156
Site Web

Re : utilité de APPEND_SLASH dans django ?

Salut,

Ben /parce-que/pour/les-uri/sai/bien/

Pour le cas des urls ou tu a besoin de simuler des extensions genre /foo.html,
bah de toute façons tu peux gérer ça dans ton url.py, au pire à un niveau
supérieur avec la var du settings.

Le Wednesday 04 February 2009 13:26:27 Fabien Benoit, vous avez écrit :
> Bonjour à tous,
>
> Pour ceux qui connaissent, pourquoi diable django tiens absolument à
> rajouter un slash à toutes les urls, par défaut ?
>
> J'ai beau me creuser, je ne vois pas l'utilité, d'autant que le très
> nombreux sites ne le font pas.
>
> En plus, c'est moche smile Mais je suis curieux, quelqu'un a-t-il un avis sur
> la question ?
>
> Fabien
>
> ---------------------------------------------------------------------------
>------------ Orange vous informe que cet  e-mail a ete controle par
> l'anti-virus mail. Aucun virus connu a ce jour par nos services n'a ete
> detecte.
>
>
>
> ---------------------------------------------------------------------------
>------------ Orange vous informe que cet  e-mail a ete controle par
> l'anti-virus mail. Aucun virus connu a ce jour par nos services n'a ete
> detecte.

Hors ligne

#3 04-02-2009 13:38:25

Rémy HUBSCHER
Membre
Inscription : 11-08-2010
Messages : 161

Re : utilité de APPEND_SLASH dans django ?

Bonjour

Tout simplement parce qu'une URL est un chemin et donc un chemin vers 
un dossier se termine tjs par un /
Cependant Django ne t'oblige pas à le faire et tu peux supprimer ce 
comportement par défaut.

Rémy

Le 4 févr. 09 à 13:26, Fabien Benoit a écrit :

> Bonjour à tous,
>
> Pour ceux qui connaissent, pourquoi diable django tiens absolument à 
> rajouter un slash à toutes les urls, par défaut ?
>
> J'ai beau me creuser, je ne vois pas l'utilité, d'autant que le très 
> nombreux sites ne le font pas.
>
> En plus, c'est moche smile Mais je suis curieux, quelqu'un a-t-il un 
> avis sur la question ?
>
> Fabien
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django

Hors ligne

#4 04-02-2009 13:43:46

Bruno Renié
Membre
Inscription : 11-08-2010
Messages : 52

Re : utilité de APPEND_SLASH dans django ?

Salut,

> Pour ceux qui connaissent, pourquoi diable django tiens absolument à
> rajouter un slash à toutes les urls, par défaut ?
>
> J'ai beau me creuser, je ne vois pas l'utilité, d'autant que le très
> nombreux sites ne le font pas.
>
> En plus, c'est moche smile Mais je suis curieux, quelqu'un a-t-il un avis sur
> la question ?

Moi, je trouve ça beau ;-)

Plus sérieusement, il y a des cas où c'est assez pratique, pour les
formulaires par exemple :

Quand tu veux afficher un formulaire pour ajouter/modifier un objet,
tu mets une url du genre /object/id/ ou /object/add/, et dans ton
template tu as juste à mettre un <form method="post" action=".">. Du
coup tu ne t'embêtes pas avec des action="{% url form_action %}" ou
des variables à passer à ton template... C'est plus léger, plus
générique.

Bruno

Hors ligne

#5 05-02-2009 15:29:49

Cyril Doussin
Membre
Inscription : 11-08-2010
Messages : 10

Re : utilité de APPEND_SLASH dans django ?

Hello,

Principalement pour normaliser le traitement des URLs, comme le dit la doc
de Django:

"The philosophy is that each URL should exist in one, and only one, place.
Technically a URL foo.com/bar is distinct from foo.com/bar/ – a
search-engine indexer would treat them as separate URLs – so it's best
practice to normalize URLs."

http://docs.djangoproject.com/en/dev/ref/middleware/

Petite digression sur l'utilisation ou non d'extensions:

Bien que tout le monde ne soit pas d'accord, beaucoup de personnes
considèrent que les URLs se terminant par un / représentent des collections
d'objets (la similarité avec des dossiers de systèmes de fichiers est
d'ailleurs faite dans la RFC 2396 qui définit la syntaxe générique des
URIs), et les URLs représentant des objets individuels se termine par une
extension (souvent .html). Ce qui veut dire qu'aucune URL ne se termine par
un nom sans extension ou /.

Par exemple:

* pour ajouter un utilisateur je ferais une requete POST vers
http://example.com/users/  vu que je modifie ma liste d'utilisateur
* pour modifier les propriétes d'un utilisateur je ferais une requete POST
vers http://example.com/users/user-id.html

Personellement, pour représenter un objet, j'utiliserais toujours une
extension de format de document (.html par défault) plutot que .php, .asp
etc pour deux raison:
* adresser une resource par une extension veut en quelque sorte dire au
serveur "agit sur l'objet représenté par ce document", ce qui me parait plus
logique que "agit sur cet objet représenté par un document généré par cette
technologie serveur."
* il est toujours bon de ne pas exposer les technologies serveur utilisées.

Aussi sur les conseils d'un expert en SEO, les moteurs de recherche
préfèrent aparement les URIs se terminant par une extension (je connais pas
les détails là-dessus).

Donc typiquement pour mes projets Django, je suis toujours la règle de:
    * collection d'objets -> /
    * objet individuel -> .html

... et je laisse APPEND_SLASH activé, au cas ou j'en ai oublié un.


Cyril



On Wed, Feb 4, 2009 at 12:26 PM, Fabien Benoit <fabien.benoit _AT_ gmail.com>wrote:

> Bonjour à tous,
>
> Pour ceux qui connaissent, pourquoi diable django tiens absolument à
> rajouter un slash à toutes les urls, par défaut ?
>
> J'ai beau me creuser, je ne vois pas l'utilité, d'autant que le très
> nombreux sites ne le font pas.
>
> En plus, c'est moche smile Mais je suis curieux, quelqu'un a-t-il un avis sur
> la question ?
>
> Fabien
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

#6 05-02-2009 15:40:08

Fabien Benoit
Membre
Inscription : 11-08-2010
Messages : 7

Re : utilité de APPEND_SLASH dans django ?

Merci à tous pour toutes ces infos!

Après mure reflexion, l'argument le plus important me semble que les moteurs
de recherches distingue les deux versions d'une urls avec ou sans slash,
donc la normalisation est importante... et il est plus facile de normaliser
dans ce sens la, grace à django.

Et bien que ceci ne soit pas très joli : http://domaine.com/test*/?*param=value
, quand on y pense, philosophiquement, ça a du sens (filtrage d'une "liste"
d'objets, comme le dit Cyril)

A plus et merci encore,

Fabien



2009/2/5 Cyril Doussin <cdoussin _AT_ gmail.com>

>
> Hello,
>
> Principalement pour normaliser le traitement des URLs, comme le dit la doc
> de Django:
>
> "The philosophy is that each URL should exist in one, and only one, place.
> Technically a URL foo.com/bar is distinct from foo.com/bar/ – a
> search-engine indexer would treat them as separate URLs – so it's best
> practice to normalize URLs."
>
> http://docs.djangoproject.com/en/dev/ref/middleware/
>
> Petite digression sur l'utilisation ou non d'extensions:
>
> Bien que tout le monde ne soit pas d'accord, beaucoup de personnes
> considèrent que les URLs se terminant par un / représentent des collections
> d'objets (la similarité avec des dossiers de systèmes de fichiers est
> d'ailleurs faite dans la RFC 2396 qui définit la syntaxe générique des
> URIs), et les URLs représentant des objets individuels se termine par une
> extension (souvent .html). Ce qui veut dire qu'aucune URL ne se termine par
> un nom sans extension ou /.
>
> Par exemple:
>
> * pour ajouter un utilisateur je ferais une requete POST vers
> http://example.com/users/  vu que je modifie ma liste d'utilisateur
> * pour modifier les propriétes d'un utilisateur je ferais une requete POST
> vers http://example.com/users/user-id.html
>
> Personellement, pour représenter un objet, j'utiliserais toujours une
> extension de format de document (.html par défault) plutot que .php, .asp
> etc pour deux raison:
> * adresser une resource par une extension veut en quelque sorte dire au
> serveur "agit sur l'objet représenté par ce document", ce qui me parait plus
> logique que "agit sur cet objet représenté par un document généré par cette
> technologie serveur."
> * il est toujours bon de ne pas exposer les technologies serveur utilisées.
>
> Aussi sur les conseils d'un expert en SEO, les moteurs de recherche
> préfèrent aparement les URIs se terminant par une extension (je connais pas
> les détails là-dessus).
>
> Donc typiquement pour mes projets Django, je suis toujours la règle de:
>     * collection d'objets -> /
>     * objet individuel -> .html
>
> ... et je laisse APPEND_SLASH activé, au cas ou j'en ai oublié un.
>
>
> Cyril
>
>
>
> On Wed, Feb 4, 2009 at 12:26 PM, Fabien Benoit <fabien.benoit _AT_ gmail.com>wrote:
>
>> Bonjour à tous,
>>
>> Pour ceux qui connaissent, pourquoi diable django tiens absolument à
>> rajouter un slash à toutes les urls, par défaut ?
>>
>> J'ai beau me creuser, je ne vois pas l'utilité, d'autant que le très
>> nombreux sites ne le font pas.
>>
>> En plus, c'est moche smile Mais je suis curieux, quelqu'un a-t-il un avis sur
>> la question ?
>>
>> Fabien
>>
>>
>> _______________________________________________
>> django mailing list
>> django _AT_ lists.afpy.org
>> http://lists.afpy.org/mailman/listinfo/django
>>
>
>
> _______________________________________________
> django mailing list
> django _AT_ lists.afpy.org
> http://lists.afpy.org/mailman/listinfo/django
>

Hors ligne

Pied de page des forums