У меня есть URL-адреса, как http://example.com/depict?smiles=CO&width=200&height=200 (и с несколькими другими дополнительными аргументами)Как создать Django reverse/url с использованием запросов args?
Мой urls.py содержит:
urlpatterns = patterns('',
(r'^$', 'cansmi.index'),
(r'^cansmi$', 'cansmi.cansmi'),
url(r'^depict$', cyclops.django.depict, name="cyclops-depict"),
Я могу пойти на этот URL и получить 200x200 PNG, который был построен, так что я знаю эта часть работает.
В моем шаблоне из ответа «cansmi.cansmi» я хочу создать URL-адрес для именованного шаблона «cyclops-pictict» с учетом некоторых параметров запроса. Я думал, что я мог бы сделать
{% url cyclops-depict smiles=input_smiles width=200 height=200 %}
где «input_smiles» является ввод в шаблон с помощью отправки формы. В этом случае это строка «CO», и я думал, что она создаст URL-адрес, подобный тому, который находится сверху.
Этот шаблон не может с TemplateSyntaxError:
Caught an exception while rendering: Reverse for 'cyclops-depict' with arguments '()' and keyword arguments '{'smiles': u'CO', 'height': 200, 'width': 200}' not found.
Это довольно общее сообщение об ошибке, как здесь, на StackOverflow и в других местах. В каждом случае, я нашел, люди использовали их с параметрами в URL-адресе регулярного выражения, что не так, когда у меня есть параметры, которые входят в запрос.
Это означает, что я делаю это неправильно. Как мне это сделать правильно? То есть, я хочу построить полный URL-адрес, включая параметры пути и запроса, используя что-то в шаблоне.
Для справки,
% 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.
Я создал запрос функции: https://code.djangoproject.com/ticket/25582 – guettli