我有一个模板question.html
,允许用户通过评论回答问题。如果成功,它会重定向到原始问题页面(/question/10
或类似页面)。
根据此处找到的表单,处理评论的视图如下所示:
def comment(request):
if request.method == 'POST':
form = CommentForm(request.POST)
if form.is_valid():
# save, process, etc..
# ...
return HttpResponseRedirect(request.META['HTTP_REFERER'])
else:
form = CommentForm()
return render(request, 'question.html', {'form': form})
问题是:如何确保最后一次渲染显示相同question/10
,而不会丢失表单中的信息?我应该在question
视图中处理表单验证吗?
编辑:好的,根据给出的答案,我想我没有足够明确的问题:场景是有DetailView
一个对象Question
,我想允许人们使用在这个上呈现的评论表单来评论那个特定的对象相同的看法。鉴于页面是由 DetailView 而不是 formview 呈现的,我想要找出的是在哪里处理表单中的帖子。
- 有多个DetailViews
- 每个视图都使用一个commentform
- 如果表单验证,重定向到原始页面(隐藏字段中的 url,正如 ThiefMaster 建议的那样?)
- 否则,在上下文中呈现带有表单的原始页面。