我有这个:
def profile(request, username):
if request.method == 'POST':
if request.user.is_authenticated():
new_message = Message(author = request.user)
form = MessagesForm(request.POST, instance = new_message)
else:
form = MessagesForm(request.POST)
if form.is_valid():
form.save()
else:
to_user = User.objects.get(username = username)
form = MessagesForm(initial = {'user': to_user.pk})
return render(request, "profile.html", {
'username': username,
'form': form,
'messages': messages,
})
这个表单提交了一个消息并返回了相同的页面。我的问题是,提交后我再次看到我的字段填写了我的信息。如何在提交后清除它?
9条答案
按热度按时间rqenqsqc1#
在保存表单而不是显示postdict后,分配空表单
of1yzvn42#
标准做法是在表单提交后重定向以防止重复。
成功时返回重定向到您的表单即可。
atmip9wb3#
在保存()之后,你可以返回带有MessagesForm(request.GET)值的“form”键。
5f0d552i4#
通常,您可以在保存数据后初始化相同的空表单:
hgc7kmma5#
尝试在@Karthikkumar的答案中使用
HttpResponseRedirect('/')
而不是HttpResponseRedirect('')
,特别是如果您的主视图是一个空路径,例如您在urls.py文件中:我遇到了类似的问题,就像上面讨论的
HttpResponseRedirect('')
将我引导到一个空白页面一样。让我知道添加斜杠是否对你有效!bq3bfh9z6#
您可以使用此选项:
dbf7pr2w7#
您可以重定向回初始帖子
请注意,“post”是所创建模型的示例
uurv41yg8#
我希望你已经为GET方法定义了一个逻辑。如果你已经定义了,那么你所能做的就是简单地在结尾添加returnrequest. meta['HTTP_REFERR']。
明白我的意思:
这应该能用,我刚测试过。
ylamdve69#
也许我迟到了,但对于Django 4.x开发者可以用途:
在我的urls.py:中,我已经设置了
path('todo/',views.mytodo, name='todolist')
正如你所看到的,保存表单后,mycode将重定向到/todo/,它在每次提交后自动刷新,并且每次都会出现一个新的表单。如果你是一个好的django开发人员,你会明白我所做的。如果你有任何疑问,请务必回复。谢谢:)