如何在Django中提交后清除表单字段

如何在Django中提交后清除表单字段,django,django-forms,Django,Django Forms,我有这个: def配置文件(请求、用户名): 如果request.method==“POST”: if request.user.is_经过身份验证(): 新消息=消息(作者=请求.用户) form=MessagesForm(request.POST,instance=new_message) 其他: 表单=消息表单(request.POST) 如果form.is_有效(): form.save() 其他: to_user=user.objects.get(username=username)

我有这个:

def配置文件(请求、用户名):
如果request.method==“POST”:
if request.user.is_经过身份验证():
新消息=消息(作者=请求.用户)
form=MessagesForm(request.POST,instance=new_message)
其他:
表单=消息表单(request.POST)
如果form.is_有效():
form.save()
其他:
to_user=user.objects.get(username=username)
form=MessagesForm(初始值={'user':to_user.pk})
返回呈现(请求“profile.html”{
“用户名”:用户名,
“形式”:形式,
“消息”:消息,
})

此表单提交消息并返回同一页。我的问题是,提交后,我再次看到我的字段填充了我的信息。提交后如何清除?

标准做法是在表单提交后重定向,以防止重复

只要在成功时返回一个重定向到表单即可

if form.is_valid():
    form.save()
    return http.HttpResponseRedirect('')

保存表单而不是显示post dict后,分配空表单

form = EmployeeForm()
    if request.method == "POST":
        pDict = request.POST.copy() 
        form = EmployeeForm(pDict) #if not valid shows error with previous post values in corresponding field
        if form.is_valid():
            form.save()
            form = EmployeeForm() # show empty form no need to give HttpResponseRedirect()

通常,您可以在保存数据后初始化相同的空表单:

if request.method == "POST":
    rf = RegistrationForm(request.POST)
    if rf.is_valid():
        print 'Saving datas..'
        #logic to save datas
        rf = PreRegistrationForm()
        return render_to_response('registration/confirmation_required.html', {'settings': settings}, context_instance=RequestContext(request))
save()之后,可以返回带有MessagesForm(request.GET)值的“form”键

返回渲染(请求“profile.html”{
“用户名”:用户名,
“表单”:MessagesForm(request.GET),
“消息”:消息,
})

尝试在@Karthikkumar的答案中使用
HttpResponseRedirect('/')
而不是
HttpResponseRedirect('')
,尤其是当主视图为空路径时,例如,您的URL.py文件中有:

urlpatterns = [path('',views.home_view),]
我遇到了与上面讨论的问题类似的问题,
HttpResponseRedirect(“”)
将我指向一个空白页。如果添加斜杠对您有效,请告诉我

您可以使用:

Sometimes you can use this idea take attrs={ "autocomplete":"off"} for each inputs.

如果我不能重定向怎么办Django CMS中的表单作为站点插件。有什么不同的方法吗?@robos85,不知道你在这里是什么意思。如果你不是通过django做的,那就在客户端做吧。我知道这已经过时了。但是当我尝试使用
HttpResponseRedirect(“”)
时,提交后会得到一个空白的白色页面。但表单已成功提交。我在Django 1频道。11@Valachio您是否意外返回了
HttpResponse(“”)
(空白页?)另外,请确保插入了要重定向到的URL。这可能是因为您的POST-handling视图严格来说是一个POST处理程序,而重定向到它本身并没有显示任何内容。返回
HttpResponseRedirect(“”)
会将您重定向到同一页面。使用Django 2.2.2返回
HttpResponseRedirect(“”)
时,我的行为与@Valachio相同。视图不仅仅是一个POST处理程序。实际上按F5或重新加载页面将发送以前提交的数据,而不是一个空白表单。因此,重定向到另一个url是最好的方法。这应该是问题的答案。实际上,按F5或重新加载页面将发送以前提交的数据,而不是空白表单。因此,重定向到另一个url是最好的解决方法。重定向页面在大多数情况下都不是一个好的选择。不要只是添加答案,尝试解释你的答案,这样会让其他人理解你的解决方案