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を作る必要がある。
ということで、作りました。