我有这个:
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})
此表单提交消息并返回相同的页面。我的问题是,提交后我再次看到我的字段充满了我的信息。如何在提交后清除它?
答案 0 :(得分:23)
在表单提交后重定向是标准的,以防止重复。
成功后,只需将重定向返回到表单。
if form.is_valid():
form.save()
return http.HttpResponseRedirect('')
答案 1 :(得分:20)
保存表单而不是显示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()
答案 2 :(得分:2)
save()之后,您可以使用MessagesForm(request.GET)值返回“表单”键。
return render(request, "profile.html", {
'username': username,
'form': MessagesForm(request.GET),
'messages': messages,
})
答案 3 :(得分:0)
通常,您可以在保存数据后初始化相同的空表单:
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))
答案 4 :(得分:0)
在@Karthikkumar的答案中尝试使用HttpResponseRedirect('/')
代替HttpResponseRedirect('')
,尤其是在主视图是空路径的情况下,例如在urls.py文件中:
urlpatterns = [path('',views.home_view),]
我遇到了与上述问题类似的问题,其中HttpResponseRedirect('')
将我引导到空白页。让我知道添加斜线是否对您有用!
答案 5 :(得分:0)
您可以使用此:
Sometimes you can use this idea take attrs={ "autocomplete":"off"} for each inputs.