django - 양식(form) 검증 및 오류 프롬프트 설정
4192 단어 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 }}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.