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 데이터를 원할 때 사용자에게 묻지 않는 방식으로이 코드를 작성할 수 있습니까?
편집 : 사용자가 어떤 형태의 유효성을 검사없이 열리는 실수로 수동 '/ 감사 /'URL을 입력하거나 역사의 페이지를 앞뒤로가는 같은 경우를 참조하고 # 1에 관해서. (우리는 여전히 "감사"페이지를 보여줄 것인가? 아니면 우리가 왜 감사의 견해에 있는지 재확인 할 필요가있다).
1. 사용자가 수동으로 '/ thanks /'URL을 입력하거나 기록 페이지를 통해 앞뒤로 가고 우연히 양식 유효성 검사없이 열지 않는 경우를 묻습니다. (우리는 여전히 "감사합니다"페이지를 보여줄 것인가? 아니면 우리가 왜 감사의 견해에있는 이유인지 재확인해야 함) – aligf
2. 동일한보기로 리디렉션 할 수 있지만 여전히 게시물 요청이 있는지 궁금합니다. 어쩌면 요청 세션을 사용해야합니까? – aligf
리디렉션하는 경우'request'에 저장된 데이터가 손실되므로 세션을 사용해야합니다.아마 당신은 다른 뷰를 생성 할 필요가 없을 것입니다. 폼 뷰에서 템플릿을 렌더링하고 거기에 리턴 할 수도 있습니다 ... 필요 이상으로 조심해야합니다. 양식 데이터가 데이터베이스에 두 번 저장되는 것을 피하고 사용자가 실제로 "파괴"할 수없는 유사한 작업을 수행 할 수 있습니다. –