Как очистить поля формы после отправки в 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})

Эта форма представляет сообщение и возвращает ту же страницу. Моя проблема в том, что после отправки я снова вижу, что мое поле заполнено моей информацией. Как очистить его после отправки?

Ответы

Ответ 1

Стандарт для перенаправления после отправки формы для предотвращения дублирования.

Просто верните перенаправление в вашу форму при успешном завершении.

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

Ответ 2

После сохранения формы вместо указания столбца 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()

Ответ 3

Обычно вы можете инициализировать ту же пустую форму после сохранения данных:

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