django - 양식(form) 검증 및 오류 프롬프트 설정

4192 단어 django
django 폼 검증에 비교적 유용한 요지는 clean과 cleaned데이터입니다. 다음에django 폼 검증 및 오류 알림 설정을 간략하게 소개합니다.
환경:
python 2.7  django 1.8.3
양식 유효성 검사:clean 및 cleaneddata
clean은 isvalid () 내부에서 호출된,cleaned데이터는 주로 필드가 정의된 형식에 부합되는지 확인하는 데 사용되며, 만약 그렇다면 그 값을 되돌려줍니다. 다음은 간단한 예를 들어 느낄 수 있습니다.
forms.py

class RegisterForm(forms.Form):
    '''
      
    '''
    username = forms.EmailField(widget=forms.TextInput(attrs={"class": "form-control", "placeholder": "       ", "value": "", "required": "required",}),
                              max_length=50,error_messages={"required": "       ",})
    password = forms.CharField(widget=forms.PasswordInput(attrs={"class": "form-control", "placeholder": "     ", "value": "", "required": "required",}),
                              min_length=8, max_length=50,error_messages={"required": "      ",})
 
    def clean(self):
        
         #    
        try:          
            username=self.cleaned_data['username']
        except Exception as e:
            print 'except: '+ str(e)
            raise forms.ValidationError(u"          ")    


        #             
        is_email_exist = UserProfile.objects.filter(email=username).exists() 
        is_username_exist = UserProfile.objects.filter(username=username).exists() 
        if is_username_exist or is_email_exist:
            raise forms.ValidationError(u"       ")


        #   
        try:
            password=self.cleaned_data['password']
        except Exception as e:
            print 'except: '+ str(e)
            raise forms.ValidationError(u"     8   ");


        return self.cleaned_data  

양식 오류 프롬프트 설정
위 raise forms.ValidationError(u "암호 최소 8자리 입력")오류 메시지가 자동으로 설정됩니다.
오류 정보를 가져오는 방법
#         
def getFormTips(form):
    errors = form._errors.setdefault(forms.forms.NON_FIELD_ERRORS, forms.utils.ErrorList())
    err = errors.pop() 
    if err:
        print type(err)
        if isinstance(err, str):
            print 'str'
        else:
            err = err.message
    print err
    return err

오류 정보 설정 방법
#         
def setFormTips(form, content): 
    if content and len(content)>0: 
        errors = form._errors.setdefault(forms.forms.NON_FIELD_ERRORS, forms.utils.ErrorList())
        errors.append(content)

views.py 실례
#   
#   ajax post 
def register(request):
    if request.method == 'POST':
       
        try:
            reg_form = RegisterForm(request.POST)
        except Exception as e:
            print str(e)
            #                
            err = "    ,   "
            return result_response(request, err) 

        if reg_form.is_valid():
            print "register success"
            try:
                username = reg_form.cleaned_data['username']
                password = reg_form.cleaned_data['password']
                user = UserProfile.objects.create(username = username, email = username, 
                password = make_password(password), is_active = True)
                user.save()
                user.backend = 'django.contrib.auth.backends.ModelBackend' #            
                #       
                auth.login(request, user)
                return result_response(request, "")
            except Exception as e:
                print str(e)
                setFormTips(reg_form, "    ,   ")
        else:
            print "register failed"

            if request.POST.get('captcha_1') == "":
                setFormTips(reg_form, "       ") 

        #                
        err = getFormTips(reg_form)
        return result_response(request, err) 


html 템플릿에서 폼 오류 정보 사용
방법1:
views로.py에서 오류 정보를 가져오는 방법 getFormTips, aax를 통해 가져오기
방법2:
form을 되돌려주고,
{{ form.non_field_errors }}

좋은 웹페이지 즐겨찾기