https://docs.djangoproject.com/ja/3.1/topics/class-based-views/
1.検索画面の実装
FormViewを使用して実装する。
1-1)forms.py:検索フォームの定義
以下ドキュメント。
Formで定義するField(項目)について、以下を参照。
目的に応じた、検索用のフォームをforms.pyに定義する。
from django.forms import Form : class UserSearchForm(Form): name = forms.CharField( initial='', label='名前', required = False, max_length=32, ) :
1-2)view.py:拡張FormViewの定義
FormViewをカスタマイズしたクラスを、以下のような感じで作成する。
from django.forms import Form : class UersSearchView(FormView): template_name = 'app/search.html' form_class = UserSearchForm success_url = '/user_list/' # 2のListViewで定義 :
1-3)url.pyの定義
urlpatternsに、定義を追加。
: from app.views import UersSearchView : urlpatterns = [ : path('search/', UserSearchView.as_view( extra_context= { 'title':'検索', : }, ), name='search'), : ] :
2.結果表示
ListViewを使用して実装する。
ドキュメントを参考に簡単に実装はできる。
3.同じページに結果を表示する
検索条件と結果を同じページに表示したい場合にどうするか?
色々調べて検討した結果、クラスベースのViewでやる場合、FormとListViewを組み合わせた新たなViewを作る必要がある。
ということで、作りました。