やりたいこと
DjangoでListViewを使ってリストを作成し、項目の絞り込みのためのフォームも設置したいです。
フォームは、bootstrap_formを用いて整形したいです。
問題点
ListViewを使わなかった時は、下記のように、テンプレート上に、
html
1#template.html 2<form action="" method="post"> 3{% csrf_token %} 4{% bootstrap_form search_form %} 5</form>
と書けば、うまく動いてくれました。
しかし、ListViewにして、views.pyで
python
1context['search_form'] = SearchForm,
と渡すと、
BootstrapError at /
Parameter "form" should contain a valid Django Form.
というエラーが出ます。
試したこと
https://stackoverflow.com/questions/19173586/error-loading-sample-django-bootstrap3-template
このあたりの情報が関係してくるのかと思いましたが、テンプレートで
{{search_form.as_p }}
や
{{search_form}}
とすると、全く何も表示されません。
コード
python
1# views.py 2from django.views.generic import ListView 3from .forms import SearchForm 4from .models import Question 5 6# 表示したいリストのview 7class QuestionListView(ListView): 8 9 model = Question 10 paginate_by = 30 11 def get_context_data(self, **kwargs): 12 context = super().get_context_data(**kwargs) 13 context['search_form'] = SearchForm, 14 return context
html
1<!--question_list.html-->> 2{% load bootstrap4 %} 3<form action="" method="post"> 4 {% csrf_token %} 5 {% bootstrap_form search_form %} 6</form>
python
1# forms.py 2class SearchForm(forms.Form): 3 search_text = forms.CharField( 4 label='Search', 5 required=True, 6 max_length=100, 7 help_text='required' 8 ) 9 10sorted_choice = ( 11 ('Newest', 'Newest'), 12 ('Recent activity', 'Recent activity'), 13 ('Most votes', 'Most votes'), 14 ('Most frequent', 'Most frequent'), 15) 16
お分かりの方、ご教示頂けますと幸いです。
よろしくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。