Djangoでwebアプリを作成しています。
ボタンを押したら、そのボタンに付いているid(tagname)を取得して、
URLディスパッチャを通して、tag/tagnameのURLに飛ぶようにjQueryを書こうと考えました。
html
1<button type="button" class="tag" id="{{tagname}}">{{tagname}}</button> 2 3<script> 4$(function(){ 5 $("button.tag").click(function(){ 6 tagname = this.id; 7 window.location.href = '{% url 'site:tag' tagname %}'; 8 }) 9}); 10</script>
python
1# urls.py 2url( 3 r'^tag/(?P<tagname>\w+)$', 4 views.tag, 5 name='tag' 6)
しかし、このページにアクセスした時に、
NoReverseMatch at /
Reverse for 'tag' with arguments '('',)' and keyword arguments '{}' not found. 1 pattern(s) tried: ['tag/(P<tagname>)/$']
というエラーが出てしまいました。
理由は、
{% url 'site:tag' tagname %}は、Djangoのテンプレートであるため、HTMLを吐き出す時点でデータが埋まっていなければならないのに、
実際にはボタンを押して初めてtagnameという変数に値が渡されるので、
HTMLを読み込んだ時点ではエラーが出てしまうということだと思います。
jQueryのイベント発生により生じた結果をURLディスパッチャに渡す方法は、ないでしょうか?
もし無理なら、ページ遷移にあたり、jQueryを使わずに、formで対応するしかないのかと思います。
お分かりの方、ご教示頂ければ幸いです。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー