Django의 Form 검증 clean 방법(검증 편6)
카탈로그
form 검증은 사용자 정의 데이터 검증이 가능한 세 가지 방법을 미리 남겨 두었다전체 프로세스 정리: (주로 clean의 원리(사용자 정의 데이터 검증)코드form 검증은 사용자 정의 데이터 검증이 가능한 세 가지 방법을 미리 남겨 두었다
self._clean_필드 이름 () # 단일 필드에 대한 미리 남기는 방법 (즉 이 필드가form 검증을 통과한 후에 해당 이름의 사용자 정의 방법을 터치합니다)self.clean_form () # 여러 필드에 대해 미리 남기는 방법self.post_clean () # 여러 필드에 대해 미리 예약하는 방법
왜 예약을 해요?데이터 형식의 검증이 통과된 후에 데이터가 데이터베이스에 저장되는 것이 정상적이지 않기 때문에 만약에 데이터베이스에 저장하는 데 문제가 발생하면 우리는 미리 남겨 두는 방법을 사용해야 한다. 왜냐하면 isvalid가True를 판단한 후에 데이터 저장에 문제가 발생하면 오류 정보는 form 자체가 생성한 오류 구조에 봉인할 수 없습니다.간단하게 이해하면 중간부품이다.
전체 프로세스
검증 프로세스: 1.이 is 호출됨valid 메서드 2.self를 실행했습니다.fuu_clean() 3.self 수행clean_필드 일치 검증 시작 4.원본을 실행하는self.clean_form () # 이 방법을 실행하는 방법 (사용자 정의 가능) (이상 지원, 이상 직접 반환) 5.원본을 실행하는self.post_clean () # 이 방법을 실행합니다 (사용자 정의 가능) (이상을 직접 되돌릴 수 없습니다.add error 방법으로 이상을 실참으로 유효하게 되돌려야 합니다) 6.is_valid 값을 부여합니다: 두 개만true는 데이터가 정확하고 하나는false입니다. 데이터 오류입니다.url 대응 함수 내 판단 idvalid 8.obj를 정확히 통과했습니다.clean에서 오류를 가져오면obj를 통해errors 가져오기
코드
from django import forms
from django.forms import fields
from django.forms import widgets
class UserForm(forms.Form):
username = fields.CharField(label=' ')
email = fields.EmailField(label=' ')
###
# def clean_username(self):
# value=self.cleaned_data['username']
# #if models.UserAuth.object.filter(username = value)
# if value == 'root':
# return value
# else:
# from django.core.exceptions import ValidationError
# raise ValidationError(' ')
### clean _post_clean
def clean(self):
v1 = self.cleaned_data['username']
v2 = self.cleaned_data['email']
if v1 == "root" and v2 =="[email protected]":
pass
else:
from django.core.exceptions import ValidationError
raise ValidationError(' ')
return self.cleaned_data
# def _post_clean(self):
# v1 = self.cleaned_data['username']
# v2 = self.cleaned_data['email']
# if v1 == "root" and v2 =="[email protected]":
# pass
# else:
# from django.core.exceptions import ValidationError
# self.add_error("__all__",ValidationError(' '))
# : "__all__" None
3 :
1. def cleand_ (): pass value, raise, , is_valid ,true obj.clean() or obj.cleaned_data , obj.errors
2. def cleand(): pass self.cleaned_data, raise, 。 is_valid ,true obj.clean() or obj.cleaned_data , obj.errors
3. def _post_cleand(): pass self.cleaned_data, self.add_error, 。 is_valid ,true obj.clean() or obj.cleaned_data , obj.errors
:Django Form select choice ( )
:Django Form ModelForm
:django modelform ( )
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django 라우팅 계층 URLconf 작용 및 원리 해석URL 구성(URLconf)은 Django가 지원하는 웹 사이트의 디렉토리와 같습니다.그것의 본질은 URL과 이 URL을 호출할 보기 함수 사이의 맵표입니다. 위의 예제에서는 URL의 값을 캡처하고 위치 매개 변수로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.