現在、すべての Django 関数ベースのビューをクラスベースのビューに変換中です...
これは私の元のコードです:
ビュー.py
def search(request):
if 'q' in request.GET:
q = request.GET['q']
if q:
result = Post.objects.filter(title__icontains=q)
variables = RequestContext(request, {
'result': result
})
return render_to_response('search.html', variables)
CBVを練習するためだけに、これをCBVに切り替えようとしています...
これは私がこれまでに持っているものです:
ビュー.py
class PostSearch(TemplateView):
template_name = 'search.html'
def get(self, request, *args, **kwargs):
q = self.request.GET.get('q')
if q:
data = {
'result': Post.objects.filter(title__icontains=q)
}
return self.render_to_response(data)
非常に単純なコードなので、これでうまくいくと思いました。ただし、次のエラーが表示されます。
ValueError: The view app_blog.views.PostSearch didn't return an HttpResponse object.
したがって、CBV では「render_to_response」の動作がまったく異なると思います...
元のコードを CBV に変換する正しい方法は何ですか??
ありがとう :(((