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 停在那里,我想继续下一个调用它在视图结束时递归返回获取请求。提前感谢您的输入。