Django のドキュメントは、POST をリダイレクトする必要があることを非常に明示しているようです。私はこれらすべてに不慣れで、展開するときはハッキングされることを熱望していません。私の質問は次のとおりです。次のビューは悪用可能ですか? post.cleaned_data が有効な場合にリダイレクトします。無効な場合もリダイレクトする必要がありますか? さらに、このような「再帰的」ビューにはセキュリティ上の弱点が含まれていますか?
def detail(request, blog_id):
b = get_object_or_404(Blog, pk=blog_id)
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
poster = form.cleaned_data['poster']
comment = form.cleaned_data['comment']
comment_date = timezone.now()
b.comment_set.create(poster=poster, comment_date=comment_date, comment=comment)
return HttpResponseRedirect(reverse('blog:detail', args=(b.id,)))
else:
return render(request, 'blog/detail.html', {
'blog': b,
'form': form,
})
form = CommentForm()
return render(request, 'blog/detail.html', {
'blog': b,
'form': form,
})
さらに、テストの経験がある方のために、このビューを完全にテストするために必要な手順を説明していただけますか? ステータス コードをテストする方法を知っています。post メソッドもテストしましたが、リダイレクトのチェーン全体を表示する方法を知りたいです (たとえば、post が呼び出され、HttpResponseRedirect を返しますが、self.client.post がそこで停止し、次の呼び出しを続行したい)ビューの最後で get リクエストを再帰的に返します。