Ich habe URLs wie http://example.com/depict?smiles=CO&width=200&height=200 (und mit mehreren anderen optionalen Argumenten)Wie konstruiere ich eine Django Reverse/URL mit Abfrage Args?
Mein urls.py enthält:
urlpatterns = patterns('',
(r'^$', 'cansmi.index'),
(r'^cansmi$', 'cansmi.cansmi'),
url(r'^depict$', cyclops.django.depict, name="cyclops-depict"),
kann ich zu dieser URL gehen und die 200x200 PNG erhalten, die gebaut wurde, damit ich weiß, dieser Teil funktioniert.
In meiner Vorlage aus der "cansmi.cansmi" -Antwort möchte ich eine URL für die benannte Vorlage "cyclops-depict" mit einigen Abfrageparametern erstellen. Ich dachte, ich
tun konnte{% url cyclops-depict smiles=input_smiles width=200 height=200 %}
wo „input_smiles“ auf die Vorlage eine Eingabe über ein Formular Vorlage ist. In diesem Fall ist es die Zeichenfolge "CO" und ich dachte, es würde eine URL wie die oben erstellen.
Diese Vorlage schlägt mit einem TemplateSyntaxError:
Caught an exception while rendering: Reverse for 'cyclops-depict' with arguments '()' and keyword arguments '{'smiles': u'CO', 'height': 200, 'width': 200}' not found.
Dies ist eine ziemlich häufig Fehlermeldung beide hier auf Stackoverflow und anderswo. In jedem Fall habe ich festgestellt, dass Leute sie mit Parametern im URL-Pfad regexp verwenden, was ich nicht habe, wenn die Parameter in die Abfrage eingehen.
Das bedeutet, ich mache es falsch. Wie mache ich es richtig? Das heißt, ich möchte die vollständige URL einschließlich Pfad- und Abfrageparametern mit etwas in der Vorlage erstellen.
Als Referenz
% 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.
ich eine Feature-Anfrage erstellt: https://code.djangoproject.com/ticket/25582 – guettli