구성 요소 일반적으로 사용되는 필드, 필드 매개 변수, 사용자 정의 유효성 검사 규칙을 형성 :

견해:

, HttpResponse에에서 django.shortcuts 렌더링 가져 오기 

. # 여기에 귀하의 의견을 작성 배경 화면
: DEF REG (요청)
IF는 == "POST"를 request.method :
사용자 = request.POST.get ( "사용자")
PWD = request.POST.get을 ( "PWD")
렌 (PWD)가 <= 6 경우 :.
렌더링 (요청을 반환, "reg.html", { "pwd_error": "당신이 너무 짧다"})
렌더링 (요청, "reg.html"를 반환)

#에서 : 전에 데이터 모델을 얻기 위해 데이터베이스를 사용
이 app01 수입 모델에서

이전에 소개 # 상속 형태 :
장고 가져 오기 양식에서

# 던져 정의 함수 :
ValidationError의 django.core.exceptions 가져에서

: # 체크섬 기능이 정의
DEF의 check_name (값) :
# 사용자 정의 유효성 검사 규칙 :
# 체크 아무것도 할 자격을 갖춘 경우
# 체크 예외 던져 실패
값의 경우 "알렉스"
ValidationError 인상 ( "알렉스, 잘못된 문자를 포함하지")

: #DEFINE 내장 정기 검사 제공 장고
django.core.validators 가져 오기 RegexValidator에서

조립 # 이전에 양식을 사용하여 클래스를 정의 :
클래스 regform (forms.Form) :
# 입력을 생성 상자, 초기 기본값 :
사용자 = forms.CharField는 (
# 필요한 정의
가 필요 = 사실은,
# 당신이 해제 할 수 있는지 여부를 정의
, #이 비활성화 = 진정한
라벨 = "사용자 이름",
초기 = "알렉스",
#는 최소 길이를 정의 :
MIN_LENGTH = 6,.
# 사용자 정의 유효성 검증
유효성 검사기는 = [check_name가,
# 정의 오류 메시지 : error_messages는,
error_messages은, = {
"필요": "버리지",
"MIN_LENGTH": "적어도 6",
}
)
# 암호화 된 텍스트 = 위젯 추가 forms.PasswordInput 필요 :
PWD = forms.CharField (라벨 = "암호", 위젯 = forms.PasswordInput)
# 사용자 정의 확인 암호 기능 :
re_pwd = forms.CharField을 (라벨 = "암호 확인", 위젯 forms.PasswordInput =)
# 정의 라디오 필드 :
성별 = forms.ChoiceField (선택 사항 = (( "1") "남성"( "2", "F")) 초기 = "2")
# 정의한 여러 선택 필드 :
. "1"# = forms.MultipleChoiceField 하비 (초기 = [ ". 1", "3", 선택 = (( "연기"), ( "2", "음료"), ( "3" "침")))
데이터베이스로부터 취득한 # :
[ ". 1". "3"] # = forms.MultipleChoiceField 하비 (초기 = = models.Hobby.objects.values_list 선택 ( "ID", "이름 ") = 위젯 형태.CheckboxSelectMultiple)
취미 forms.MultipleChoiceField = (초기 = "1", "3", 위젯 = forms.CheckboxSelectMultiple)
#手机号校验:
전화 = forms.CharField (
검증 = RegexValidator (R "^ 1 [3-9] \ D {9} $", " 전화 번호가 올바르지 형식")]
)
__는 def __init (자기, 인수 *, ** kwargs로 일) :
슈퍼 () .__ init__ (* 인수, ** kwargs로)
# 사용자 지정 동작 :
인쇄 (self.fields)
. self.fields [ "취미"] = models.Hobby.objects.values_list 선택 ( "ID", "이름")

# 깨끗한 방법을 정의 지역 후크 :
DEF의 clean_user (셀프) :
#는 필드의 현재 값의 성공적인 복귀를 확인
던져 실패 # 검사
: "알렉스"IF self.cleaned_data.get에서 ( "사용자")
, 인상 ValidationError ( "알렉스을 포함 할 수 없습니다를 잘못된 문자 ")
반환 self.cleaned_data.get ("사용자 ")

# 글로벌 후크 정의 :
DEF 청소 (셀프) :
# 글로벌 후크
#은 self.cleaned_data의 분야를 모두 성공적으로 반환 값을 확인
# 예외 실패 던져 확인
self.cleaned_data.get PWD = ( "PWD")는
re_pwd = self.cleaned_data.get ( "re_pwd")
의 반환 값은 모든 필드에 동일한 경우는 # 결정
PWD == re_pwd 경우 :
self.cleaned_data 창
다른 :
# 애드 에러 정의 방법
self.add_error ( "re_pwd", "암호 회 일치 !!")
인상 ValidationError ( "암호 회 일치")

DEF의 REG2 (요청) :
# GET 형태 개체 :
form_obj regform = ()
IF == request.method의 "POST"
form_obj = regform (request.POST의)
is_valid와 # 체크섬 :
IF ()가 form_obj.is_valid :
(request.POST의) 인쇄
() form_obj.cleaned_data 입력 (form_obj.cleaned_data) 프린트
HttpResponse에를 반환 ( "注册成功")
: 리턴 (요청, "reg2.html", {form_obj "form_obj"}) 렌더링

reg.html를 :
<! DOCTYPE HTML> 
<HTML LANG = "EN">
<head>
<메타 캐릭터 = "UTF-8">
<TITLE> 제목 </ TITLE>
</ head>
<body>

<form 조치 = ""METHOD = " 포스트 ">
{#加% csrf_token %}作用是可以提交포스트请求#}
{% csrf_token %}
<p>
用户名: <input 타입 ="텍스트 "NAME ="사용자 ">
</ p>
<p>
密码: <input 타입 = "비밀번호"NAME = "PWD"> <SPAN> {{pwd_error}} </ SPAN>
</ p>
<버튼>注册</ 버튼>
</ FORM>
</ BODY>
</ HTML >

REG2 :
<! DOCTYPE HTML> 
<HTML LANG = "EN">
<head>
<메타 캐릭터 = "UTF-8">
<TITLE> 제목 </ TITLE>
</ head>
<body>

<form 조치 = ""METHOD = " 포스트 "NOVALIDATE>
{% csrf_token %}
{# form_obj.as_p {{}}} #
<p>
= 대한 <라벨"form_obj.user.id_for_label {{}} "> form_obj.user.label {{}} </ 라벨>
{#生成입력框用对象点#}
{{}} form_obj.user <SPAN> form_obj.user.errors.0 {{}} </ SPAN>
</ p>
<p>
<= 레이블에 대한 " {{form_obj.pwd.id_for_label}} "> {{form_obj.pwd.label}} </ 라벨>
form_obj.pwd {{}} <SPAN> form_obj.pwd.errors.0 {{}} </ SPAN>
</ p>
<p>
<= 레이블 "form_obj.re_pwd.id_for_label {{}}"> form_obj.re_pwd.label {{}} </ 라벨>
{{}} form_obj.re_pwd <SPAN> {{}} form_obj.re_pwd.errors.0 </ SPAN>
</ p>
<p>
<= 레이블 "form_obj.gender.id_for_label {{}}"> form_obj.gender.label {{}} </ 라벨>
{{form_obj.gender}}
</ P >
<p>
<= 레이블 "form_obj.hobby.id_for_label {{}}"> form_obj.hobby.label {{}} </ 라벨>
{{form_obj.hobby}}
</ p>
<p>
는 <레이블 = "{{}} form_obj.phone.id_for_label"> form_obj.phone.label {{}} </ 라벨>
{{}} form_obj.phone <SPAN> form_obj.phone.errors.0 {{}} </ SPAN>
</ p>
{{}} form_obj.errors
<버튼>注册</ 버튼>
</ FORM>
</ BODY>
</ HTML>

추천

출처www.cnblogs.com/zhang-da/p/12112476.html