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,
)
:
from django.forms import Form
:
class UserSearchForm(Form):
name = forms.CharField(
initial='',
label='名前',
required = False,
max_length=32,
)
:
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で定義
:
from django.forms import Form
:
class UersSearchView(FormView):
template_name = 'app/search.html'
form_class = UserSearchForm
success_url = '/user_list/' # 2のListViewで定義
:
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'),
:
]
:
:
from app.views import UersSearchView
:
urlpatterns = [
:
path('search/', UserSearchView.as_view(
extra_context=
{
'title':'検索',
:
},
), name='search'),
:
]
:
: from app.views import UersSearchView : urlpatterns = [ : path('search/', UserSearchView.as_view( extra_context= { 'title':'検索', : }, ), name='search'), : ] :
2.結果表示
ListViewを使用して実装する。
ドキュメントを参考に簡単に実装はできる。
3.同じページに結果を表示する
検索条件と結果を同じページに表示したい場合にどうするか?
色々調べて検討した結果、クラスベースのViewでやる場合、FormとListViewを組み合わせた新たなViewを作る必要がある。
ということで、作りました。