質問: ### 前提・実現したいこと こんにちはPythonを初めてまだ半年のペーペーです。。 Djangoにおいてhtmlテンプレートから直接関数を起動したいです。 Djangoのurl.pyとview.pyを記述してページを変えながらの関数起動(この場合はview関数)方法はわかりました。 しかし、サイト内でボタンを押すとすぐに関数が実行されるような仕様がわかりません。 例えば) ツイッターなどのフォローをする際のボタンなど。
回答: テンプレートから関数を呼び出す方法は大まかに2つあります。 1つは、モデルにメソッドを定義し、呼び出すケースです。 ``` class Post(models.Model): """ブログの記事""" title = models.CharField(max_length=255) def __str__(self): return self.title def my_function(self): return 'aaaaaaaa' ``` テンプレートでは、以下のようにして呼び出せます。当然、テンプレートにモデルインスタンスを渡しておく必要があります。 ``` {% for post in post_list %} {{ post.my_function }} {% endfor %} ``` 次にテンプレートタグ・テンプレートフィルターを使用する方法です。 Djangoはデフォルトでいくつか用意していますが、自分で好きなタグ・フィルターを作成することもできます。ちょっと手間はかかりますのでここでは割愛あいますが、「django タグ 作成」等で検索してみてください。 使う際は、テンプレートで以下のように呼び出します。 ``` {% my_custom_tag %} ``` ただ、これらはあくまでHTMLを出力する前の段階の処理です。 フォローボタンのようなものは、JavaScriptや、特にAjaxを使ったりして実装するのが基本のように思います。 非常にシンプルな例であれば、ボタンのonclickでJavaScriptの関数を呼び出し、その結果に応じて表示する内容をJavaScriptで制御する、というものです。