ฉันมี URL เช่น http://example.com/depict?smiles=CO&width=200&height=200 (และอาร์กิวเมนต์ทางเลือกอื่นๆ อีกหลายข้อ)
urls.py ของฉันประกอบด้วย:
urlpatterns = patterns('',
(r'^$', 'cansmi.index'),
(r'^cansmi$', 'cansmi.cansmi'),
url(r'^depict$', cyclops.django.depict, name="cyclops-depict"),
ฉันสามารถไปที่ URL นั้นและรับ PNG ขนาด 200x200 ที่สร้างขึ้นได้ ดังนั้นฉันจึงรู้ว่าส่วนนั้นใช้งานได้
ในเทมเพลตของฉันจากการตอบกลับ "cansmi.cansmi" ฉันต้องการสร้าง URL สำหรับเทมเพลตที่มีชื่อ "cyclops-depict" โดยให้พารามิเตอร์การค้นหาบางตัว ฉันคิดว่าฉันทำได้
{% url ไซคลอปส์-depict ยิ้ม=input_smiles ความกว้าง=200 ความสูง=200 %}
โดยที่ "input_smiles" เป็นการป้อนข้อมูลไปยังเทมเพลตผ่านการส่งแบบฟอร์ม ในกรณีนี้คือสตริง "CO" และฉันคิดว่าจะสร้าง URL แบบที่อยู่ด้านบน
เทมเพลตนี้ล้มเหลวด้วย TemplateSyntaxError:
พบข้อยกเว้นขณะเรนเดอร์: ย้อนกลับสำหรับ 'cyclops-depict' พร้อมอาร์กิวเมนต์ '()' และอาร์กิวเมนต์คำหลัก '{'smiles': u'CO', 'height': 200, 'width': 200}' ไม่พบ
นี่เป็นข้อความแสดงข้อผิดพลาดที่พบบ่อยทั้งที่นี่ใน StackOverflow และที่อื่นๆ ในทุกกรณีที่ฉันพบ ผู้คนใช้พารามิเตอร์เหล่านี้กับพารามิเตอร์ใน regexp เส้นทาง 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.