python
  • django
  • django-views
  • 2010-11-06 14 views 1 likes 
    1

    je ne peux pas obtenir Django inverse résoudre l'URL du nom suivant -ne peut pas résoudre exception Django "de NoReverseMatch" avec kwargs

    entrée URLconf:

    url(r'^shotmanager/(?P<shotid>\d+)/$', 'ctac.views.shotManager', {'message': "", 'errors': []}, name = 'shot-manager') 
    

    HttpResponseRedirect appel:

    return HttpResponseRedirect(reverse("shot-manager", kwargs={'shotid': id, 'message': s, 'errors': errorList})) 
    

    Je ne vois rien dans les docs Django qui suggère que je ne peux pas mélanger kwargs dans l'url et l'entrée du dictionnaire dans l'url. Pour une raison quelconque, l'inverse résoudra bien si je l'envoie seulement "shotid".

    J'ai déjà visité le fil suivant

    Reversing Django URLs With Extra Options

    et ont étudié. On ne sait pas si cela a été résolu non plus.

    Répondre

    4

    reverse renvoie une URL remplie avec les valeurs que vous transmettez dans les arguments ou kwargs. Mais l'URL que vous essayez de générer n'a pas d'espace pour message. Où irait-il dans l'URL générée?

    Modifier en réponse au commentaire Si vous voulez passer des messages entre des pages vues, la bonne façon de le faire est pas par l'URL, mais via la session. Django inclut même un messaging framework pour gérer cela pour vous.

    +1

    D'accord. Et juste pour clarifier davantage, la dict spécifiée dans kwargs du modèle d'URL est utilisée pour spécifier des valeurs supplémentaires à transmettre à la fonction de vue associée. Cela n'a aucune incidence sur l'URL elle-même, ni sur la façon dont l'URL est résolue, correspondue, etc. –

    +0

    Merci. Je suppose que cela a du sens - l'API ne dit pas spécifiquement que la redirection ne peut pas remplacer les variables supplémentaires transmises ainsi que la variable dans l'URL. Est-ce que vous connaissez des gens pour envoyer des données à travers les variables de message et d'erreur, comme je l'ai fait, à travers une redirection? Merci beaucoup pour vos réponses. – user498962

    +0

    Ce que je dis est que j'ai besoin d'un formulaire pour se rediriger vers lui-même (un paradigme POST-REDIRECT-GET) de sorte qu'un rafraîchissement ne resoumise pas le formulaire, mais le faire avec un message ou une variable d'erreur peut l'afficher dans le formulaire. – user498962

     Questions connexes

    • Aucun problème connexe^_^