如何清除表单字段后,在Django

问题描述:

提交我有这样的:如何清除表单字段后,在Django

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}) 

这种形式提交信息并返回相同的页面。我的问题是,在提交后我再次看到我的领域充满了我的信息。提交后如何清除它?

表单提交后重定向以防止重复的标准。

只需在成功时返回一个重定向到您的表单。

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

Whai不做重定向? - 在Django-CMS中作为网站插件的形式。有什么不同的方法吗? – tunarob 2012-12-05 01:25:28

+0

@ robos85,不知道你在这里是什么意思。如果你不通过django来做,那就在客户端做。 – 2012-12-05 01:28:07

+0

我知道这是旧的。但是当我尝试使用'HttpResponseRedirect('')'时,在提交后我得到一个空白的白页。该表格已成功提交。我在Django 1.11 – Valachio 2017-11-19 00:06:32

节约形式,而不是展示后字典后分配空形式

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() 

通常你可以初始化同一个空的形式已保存DATAS后:如果我能

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)) 
+2

实际上按F5或重新加载页面将发送以前提交的数据,而不是空白表格。所以重定向到另一个网址是最好的出路。 – Peter 2015-06-11 15:34:18