テンプレートから関数を呼び出す方法は大まかに2つあります。
1つは、モデルにメソッドを定義し、呼び出すケースです。
python
1class Post(models.Model):
2 """ブログの記事"""
3
4 title = models.CharField(max_length=255)
5
6 def __str__(self):
7 return self.title
8
9 def my_function(self):
10 return 'aaaaaaaa'
テンプレートでは、以下のようにして呼び出せます。当然、テンプレートにモデルインスタンスを渡しておく必要があります。
html
1{% for post in post_list %}
2 {{ post.my_function }} <!-- ここでmy_functionを呼ぶ -->
3{% endfor %}
次にテンプレートタグ・テンプレートフィルターを使用する方法です。
Djangoはデフォルトでいくつか用意していますが、自分で好きなタグ・フィルターを作成することもできます。ちょっと手間はかかりますのでここでは割愛あいますが、「django タグ 作成」等で検索してみてください。
使う際は、テンプレートで以下のように呼び出します。
python
1{% my_custom_tag %}
ただ、これらはあくまでHTMLを出力する前の段階の処理です。
フォローボタンのようなものは、JavaScriptや、特にAjaxを使ったりして実装するのが基本のように思います。
非常にシンプルな例であれば、ボタンのonclickでJavaScriptの関数を呼び出し、その結果に応じて表示する内容をJavaScriptで制御する、というものです。
2017/04/12 12:16 編集