Tôi có URL như http://example.com/depict?smiles=CO&width=200&height=200 (và với một số đối số tùy chọn khác)Làm thế nào để xây dựng một Django ngược/url bằng cách sử dụng truy vấn args?
urls.py My chứa:
urlpatterns = patterns('',
(r'^$', 'cansmi.index'),
(r'^cansmi$', 'cansmi.cansmi'),
url(r'^depict$', cyclops.django.depict, name="cyclops-depict"),
tôi có thể đi đến URL và nhận được 200x200 PNG đã được xây dựng, vì vậy tôi biết phần đó hoạt động.
Trong mẫu của tôi từ phản hồi "cansmi.cansmi", tôi muốn tạo URL cho mẫu có tên "cyclops-depict" được cung cấp một số tham số truy vấn. Tôi nghĩ tôi có thể làm
{% url cyclops-depict smiles=input_smiles width=200 height=200 %}
trong đó "input_smiles" là đầu vào cho mẫu thông qua gửi biểu mẫu. Trong trường hợp này, đó là chuỗi "CO" và tôi nghĩ rằng nó sẽ tạo một URL giống như URL ở trên cùng.
mẫu này không thành công với một TemplateSyntaxError:
Caught an exception while rendering: Reverse for 'cyclops-depict' with arguments '()' and keyword arguments '{'smiles': u'CO', 'height': 200, 'width': 200}' not found.
Đây là một thông báo lỗi khá phổ biến cả ở đây trên StackOverflow và các nơi khác. Trong mọi trường hợp tôi tìm thấy, mọi người đã sử dụng chúng với các tham số trong đường dẫn URL regexp, đó không phải là trường hợp tôi có nơi các tham số đi vào truy vấn.
Điều đó có nghĩa là tôi đang làm sai. Làm thế nào để tôi làm điều đó đúng không? Đó là, tôi muốn xây dựng URL đầy đủ, bao gồm các tham số đường dẫn và truy vấn, sử dụng một cái gì đó trong mẫu.
Để tham khảo,
% 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.
Tôi tạo ra một yêu cầu tính năng: https://code.djangoproject.com/ticket/25582 – guettli