如何清除表单字段后,在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('')
答
节约形式,而不是展示后字典后分配空形式
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
Whai不做重定向? - 在Django-CMS中作为网站插件的形式。有什么不同的方法吗? – tunarob 2012-12-05 01:25:28
@ robos85,不知道你在这里是什么意思。如果你不通过django来做,那就在客户端做。 – 2012-12-05 01:28:07
我知道这是旧的。但是当我尝试使用'HttpResponseRedirect('')'时,在提交后我得到一个空白的白页。该表格已成功提交。我在Django 1.11 – Valachio 2017-11-19 00:06:32