10
votes

Aide d'exception Norefersematch à Django

Je suis assez nouveau à Python et suivant avec la partie 4 du tutoriel du cadre Django ici . J'essaie de mettre en œuvre des vues génériques pour l'application de sondages - Mon code semble correct (aussi loin que je peux dire), mais lorsque j'essaie de voter, je reçois une exception Norefersematch indiquant:

inverse pour "sondages / pollsults" avec des arguments "(1L,)" et des arguments mots clés "{}" non trouvé.

Mon code travaillait parfaitement avant d'avoir tenté la vue générique, mais je ne peux pas sembler identifier le problème maintenant.

Voici le code de mon URLS.PY dans le répertoire de sondage: xxx

et voici les vues.pycexxp> J'ai un sentiment que c'est une erreur syntaxique, mais Je ne peux pas le trouver. Merci d'avance pour toute aide ...


0 commentaires

4 Réponses :


5
votes

Essayez d'utiliser:

return HttpResponseRedirect(reverse('poll_results', kwargs={'object_id': p.id}))


4 commentaires

Merci - ça a fonctionné. Pourriez-vous peut-être expliquer comment il diffère de la version dans le tutoriel et pourquoi cela ne fonctionnait pas auparavant?


Je ne sais pas sur le tutoriel. Mais il semble que la vue générique utilise des arguments de mots clés. Le résolveur inverse correspond à Args et kwargs séparément, alors lorsque vous passez arguments, il ne correspondait pas à la vue qui a utilisé Kwargs. Mais quand vous passez kwargs ça marche. Avoir un sens?


Cette ligne était incorrecte lorsque j'ai eu ce problème. Le code ci-dessus ne provoque qu'une erreur pour moi, mais le code des dernières lignes du tutoriel a fonctionné correctement, sur mon installation 1.4. Avec quelle version de Django cela fonctionne-t-il?


@Nobugs: Quelle que soit la version de Django, il y a environ 3 ans, lorsque j'ai écrit la réponse ...



1
votes

Êtes-vous sûr que c'est là que votre erreur est vraiment? Basé sur le message d'erreur, il ressemble à une vue ou dans un modèle que vous essayez d'inverser 'sondages / poll_results' (dans un modèle, vous pouvez faire quelque chose comme {% URL sondages / poll_results poll.pk%} )


1 commentaires

Je fais quelque chose comme ça dans mon modèle mais je ne comprends pas pourquoi c'est



0
votes

J'ai essayé la solution fournie comme réponse et n'a pas travaillé pour moi. Dans mon cas, j'avais la même erreur (suivant le même tutoriel) et le problème était que le nom de la vue dans le fichier URLs.py était un peu différent de celui des vues.py (car une erreur de frappe).


0 commentaires

1
votes

Je ne pouvais trouver aucune explication qui corrigeait le problème, jusqu'à ce que je rende à travers le tutoriel Django abrégé de cette personne: http://tony.abou-assaleh.net/web-development/stripped-ndown-django-Tutorial

C'est essentiellement une ligne dans le modèle de détails, qui devrait être: xxx

au lieu de: xxx

Je ne sais pas pourquoi cela corrige le problème, mais il a fait pour moi. J'aimerais une explication si quelqu'un en a un.


0 commentaires