Django의 Form 검증 clean 방법(검증 편6)

3613 단어 Django
전편: Django의Form 검증select의choice 옵션 데이터가 데이터베이스에서 실시간으로 호출(검증편 5) 클릭하여 디렉터리 편으로 이동: Django의Form 및 ModelForm 디렉터리 편에서 클릭하여 다음 편으로 이동: django의modelform 검증 실전 예시 시연(검증편 7) 클릭하여 이동
카탈로그
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 ( )

좋은 웹페이지 즐겨찾기