How to clear form fields after a submit in Django

喜夏-厌秋 提交于 2019-12-18 02:02:08

问题


I've this:

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

This form submit a message and return the same page. My problem is that after the submit I see again my field filled with my information. How to clear it after the submit?


回答1:


It's standard to redirect after form submission to prevent duplicates.

Just return a redirect to your form on success.

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



回答2:


After saving form instead of showing post dict assign the empty form

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



回答3:


Usually you can initialize the same empty form after you have saved 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))


来源:https://stackoverflow.com/questions/5773408/how-to-clear-form-fields-after-a-submit-in-django

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!