J'ai URL comme http://example.com/depict?smiles=CO&width=200&height=200 (et avec plusieurs autres arguments en option)Comment construire un reverse/url Django en utilisant des arguments de requête?
Mon urls.py contient:
urlpatterns = patterns('',
(r'^$', 'cansmi.index'),
(r'^cansmi$', 'cansmi.cansmi'),
url(r'^depict$', cyclops.django.depict, name="cyclops-depict"),
je peux aller à cette URL et obtenir le 200x200 PNG qui a été construit, donc je sais cette partie fonctionne.
Dans mon modèle de la réponse "cansmi.cansmi", je veux construire une URL pour le modèle nommé "cyclops-dépeindre" donné quelques paramètres de requête. Je pensais que je pouvais faire
{% url cyclops-depict smiles=input_smiles width=200 height=200 %}
où « input_smiles » est une entrée au modèle via une soumission de formulaire. Dans ce cas, c'est la chaîne "CO" et je pensais que cela créerait une URL comme celle en haut.
Ce modèle échoue avec un TemplateSyntaxError:
Caught an exception while rendering: Reverse for 'cyclops-depict' with arguments '()' and keyword arguments '{'smiles': u'CO', 'height': 200, 'width': 200}' not found.
Ceci est un message d'erreur assez commune à la fois ici sur StackOverflow et ailleurs. Dans tous les cas, j'ai trouvé que les gens les utilisaient avec des paramètres dans l'URL regexp, ce qui n'est pas le cas où les paramètres entrent dans la requête.
Cela signifie que je me trompe. Comment puis-je le faire correctement? Autrement dit, je veux construire l'URL complète, y compris les paramètres de chemin et de requête, en utilisant quelque chose dans le modèle.
Pour référence,
% python manage.py shell
Python 2.6.1 (r261:67515, Feb 11 2010, 00:51:29)
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from django.core.urlresolvers import reverse
>>> reverse("cyclops-depict", kwargs=dict())
'/depict'
>>> reverse("cyclops-depict", kwargs=dict(smiles="CO"))
Traceback (most recent call last):
File "<console>", line 1, in <module>
File "/Library/Python/2.6/site-packages/django/core/urlresolvers.py", line 356, in reverse
*args, **kwargs)))
File "/Library/Python/2.6/site-packages/django/core/urlresolvers.py", line 302, in reverse
"arguments '%s' not found." % (lookup_view_s, args, kwargs))
NoReverseMatch: Reverse for 'cyclops-depict' with arguments '()' and keyword arguments '{'smiles': 'CO'}' not found.
J'ai créé une demande de fonctionnalité: https://code.djangoproject.com/ticket/25582 – guettli