http://example.com/depict?smiles=CO&width=200&height=200のような URL があります(その他のオプションの引数がいくつかあります)
私の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」応答からのテンプレートで、いくつかのクエリ パラメータを指定して、名前付きテンプレート「cyclops-depict」の URL を作成したいと考えています。できると思った
{% url サイクロプス描写の笑顔=input_smiles 幅=200 高さ=200 %}
「input_smiles」は、フォーム送信によるテンプレートへの入力です。この場合は「CO」という文字列で、一番上のような URL が作成されると思いました。
このテンプレートは TemplateSyntaxError で失敗します:
レンダリング中に例外をキャッチしました: 引数 '()' およびキーワード引数 '{'smiles': u'CO', 'height': 200, 'width': 200}' を持つ 'cyclops-depict' のリバースが見つかりません。
これは、ここ 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.