DjangoのViewについて
Djangoには「Viewテンプレート」というものがあります。ここではDjangoのビュー操作について書いています。
Djangoにはviewをテンプレートから呼び出して書くことができます。開発の際に、一からコードを書かなくてもよい仕組みになります。
sample/views.py
テンプレートビューを使ったコード
from .models import Todo
from django import Templateview
class IndexView(TemplateView):
template_name = 'index.html'
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs) #オーバーライド
context['message'] = 'こんにちは'
return context
TemplateViewはトップページによく使われます。
template_nameを指定し、データを表示させるためにget_context_data関数を使用します。
get_context_dataはオリジナル変数を作るときに使います。
context_dataをオーバライドさせて、コンテキストに値を渡します。
リターンで返される文字列は"こんにちは"になります。
Djangoにおいてこれらのクラスは、ジェネリックビューや汎用ビュー(Generic views)などと呼ばれています。その基本となるクラスの一つがTemplateViewです。
ListView
ただリストを表示をしたいだけならListViewがいいかもしれません。
from .models import Todo
from django import generic.ListView #追加
class IndexView(ListView):
template_name = 'index.html'
model = Todo
context_object_name = "todo_list"
ここではTodoリストを表示しています。
モデルの指定とcontext nameを指定していますが、ルールに従うことによりこれは省くことができます。
from .models import Todo
from django.views.generic import ListView
class IndexView(ListView):
template_name = 'index.html'
これで大丈夫です。
ルールとして
<アプリ名>/<モデル名>_list.html
コンテキスト変数:<モデル名>_list
app/list.html
{% for todo in todo_list %}
<li>{{ todo }}</li>
{% endfor %}
これでtodoリストが表示されます。
まとめ
テンプレートViewを使うと簡単にデータ表示させることができる。
リスト表示させるだけなら、汎用テンプレートを使うと数行でコードで書ける。
ログイン認証も記事おすすめ!
ご覧いただきありがとうございました。 サポートしていただいたお金は開発費にかけさせていただきます。