その9
記事を検索したい時ってありますよね?
トップページに検索ボックスと検索ボタンをつけて、記事タイトル検索をしましょう!
forms.py
検索ボックスもformですよね?
次のclassを追加しましょう。
blog/forms.py
class SearchForm(forms.Form):
q = forms.CharField(label="検索")
qは一般的にqueryです。なんでもいいですが、qがわかりやすそうです。
views.py
今回はdef post_list内
の処理でよさそうです。
views.py
def post_list(request):
posts = Post.objects.all()
form = forms.SearchForm()
print(request.GET)
if request.GET.get('q'):
posts = posts.filter(title__contains = request.GET.get('q')) #titleにqを含む、部分一致検索が可能
return render(request, 'blog/post_list.html', {
'posts': posts,
'form': form
})
return renderの中にform
も追加してくださいね。
urls.py
ページ内処理なので変更ありません。
post_list.html
post_list.html
<form method="get" action="">
{{ form }}
<input type="submit" value="検索">
</form>