Я видел образцы Django, и я вижу, что у них хорошая обработка ошибок. Однако я хочу посмотреть, есть ли еще лучший подход, общий шаблон для обработки ошибок проверки формы в Django. Это пример я нашел here:Как написать хорошую проверку формы в Django?
def contact(request):
if request.method == 'POST': # If the form has been submitted...
form = ContactForm(request.POST) # A form bound to the POST data
if form.is_valid(): # All validation rules pass
# Process the data in form.cleaned_data
# ...
return HttpResponseRedirect('/thanks/') # Redirect after POST
else:
form = ContactForm() # An unbound form
return render_to_response('contact.html', {
'form': form,
})
В частности, мне было интересно:
Как может посмотреть в «/ спасибо /» убедитесь, что форма была утверждена? Существуют ли какие-либо общие способы передачи успешной проверки формы на следующий вид? Или мне нужно сделать что-то вручную, например, установить флажок в сеансе запроса?
Как написать этот код таким образом, чтобы форма была недействительной и страница показывалась с ошибками при отправке, если пользователь обновляет браузер, он не будет спрашивать пользователя, хотят ли они снова получать данные POST?
EDIT: Что касается # 1, я имею в виду случаи, как пользователь вручную введя «/ спасибо /» URL или идти вперед и назад по страницам истории и случайно открывающимся без какой-либо формы проверяемых. (Мы все еще показываем страницу «спасибо» или нам нужно как-то повторить проверку, почему мы с благодарностью смотрим).
1. Я просил, чтобы такие случаи, как пользователь, вручную вводили URL-адрес/thanks/'или возвращались назад и вперед по страницам истории и случайно открывали его без проверки какой-либо формы. (Мы все еще показываем страницу «спасибо», или нам нужно как-то повторить проверку, почему мы находимся в благодарственном представлении) – aligf
2. Мне было интересно, есть ли способ перенаправить на тот же взгляд, но все еще есть почтовые запросы? Может быть, мне нужно использовать сеанс запроса? – aligf
Если вы перенаправляете, вы теряете данные, хранящиеся в 'request', поэтому для этого вам нужно будет использовать сеанс.Вероятно, вам не нужно было бы создавать другое представление, вы также могли бы отобразить шаблон в своем виде и вернуть его туда ... Хотя я думаю, что вы пытаетесь быть немного более осторожным, чем необходимо, до тех пор, пока вы избегая данных формы, которые хранятся дважды в базе данных и аналогичные вещи, которые пользователь не может действительно «уничтожить» что-либо ... –