IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Django Python Discussion :

[Django] probleme de '/' dans les urls


Sujet :

Django Python

  1. #1
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut [Django] probleme de '/' dans les urls
    Bonsoir et bonne fetes

    Je me suis tombé sur un probleme assez embetant à propos de django : le probleme est que j aimerai passer en variable d'url un '/' mais malgres l encodage URI (%2F) il le transcrit lors du parsing de l'url

    un exemple sera plus clair :

    je tape cette url dans le navigateur :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /tag/ExposureTime/1%2F10/
    que je recupere comme cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url(r'^tag/(?P<tag_type>[^/]+)/(?P<tag_value>[^/]+)/$', 'tag_select', name="tag_select"),

    mais helas il me recupere ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Page not found (404)
    Request Method: 	GET
    Request URL: 	http://localhost:8000/tag/ExposureTime/1/10/
    il a fait un urldecode dessus ... je ne trouve pas cela spécialement logique car le principe d encoder son url c qu'elle arrive au bon endroit en passant du contenu qui casserai l'url si il etait tel quel ...

    Bon certe je pourrais utiliser un parametre get mais bon cela ne serai pas vraiment dans la philosophie de django ...

    Si vous avez des solutions ... je vous ecoute

    encore bonne fetes

  2. #2
    Membre éclairé
    Avatar de GnuVince
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2004
    Messages
    679
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2004
    Messages : 679
    Points : 803
    Points
    803
    Par défaut
    Change ton format de tag pour ne pas avoir de / dedans.

  3. #3
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    bin dans ce cas la c une fraction quand c'est inferieur a 0,5 si je le stoc comme float je vais plus avoir la précision (pour 1/3 =/= 0.33333333333333)

  4. #4
    Membre du Club
    Inscrit en
    Août 2006
    Messages
    46
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 46
    Points : 58
    Points
    58
    Par défaut
    Ce n'est pas un problème d'encodage. C'est ton expression régulière qui n'est pas bonne. Tant que tu aura un [^/] dans celle ci tu ne récupérera jamais de '/'.
    Essai plutôt ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url(r'^tag/(?P<tag_type>[^/]+)/(?P<tag_value>\d+/\d+)/$', 'tag_select', name="tag_select"),
    ou ça si tu veux récupérer tout ce qu'il y a entre ExposureTime et le dernier '/'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    url(r'^tag/(?P<tag_type>[^/]+)/(?P<tag_value>.+)/$', 'tag_select', name="tag_select"),
    Pour plus d'info sur les expression régulières en python, voir la doc officielle:
    http://docs.python.org/lib/re-syntax.html

  5. #5
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Points : 1 257
    Points
    1 257
    Par défaut
    nan mais la valeur est totalement arbitraire ca peut etre une fraction comme ca peut etre autre chose ... (string a espace, 2 chiffres avec un point au milieu, ...)

    et tout captuer avec un .+ ca n ira pas cela va récuperer la suite de l url (car cela va capturer les '/')

    J'ai trouver une solution : je fait 2 coup d urlencode sur ma valeur, il la decode une fois et ne vois pas le / et je decode ensuite pour récupérer ma valeur ...

    merci de votre aide tout de même

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 12
    Dernier message: 04/07/2008, 09h51
  2. Réponses: 5
    Dernier message: 13/11/2007, 22h00
  3. Comment cacher les 4DACTION dans les urls?
    Par longomarc dans le forum 4D
    Réponses: 3
    Dernier message: 05/10/2007, 15h01
  4. Réponses: 13
    Dernier message: 03/09/2006, 16h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo