Ответ 1
Стандарт для перенаправления после отправки формы для предотвращения дублирования.
Просто верните перенаправление в вашу форму при успешном завершении.
if form.is_valid():
form.save()
return http.HttpResponseRedirect('')
У меня есть это:
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('')
После сохранения формы вместо указания столбца 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()
Обычно вы можете инициализировать ту же пустую форму после сохранения данных:
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))