day 95 form 구성 요소
form 구성 요소
사용자 가 입력 한 값 을 판단 하지 못 한 문제 가 있 었 습 니 다.
이전에 존 재 했 던 문제:
#
# views.py
from django.forms import Form
from django.forms import fields
class LoginForm(Form):
#
# form name
username = fields.CharField(
required=True, #
max_length=16, # 16
min_length=6, # 6
error_messages={ #
'required': ' ',
'max_length': ' ',
'min_length': ' ',
}
)
pwd = fields.CharField()
age = fields.IntegerField(
required=True,
max_value=100,
min_value=0,
error_messages={
"required" : ' ',
"invalid" : ' ', # invalid
}
)
def login(request):
if request.method == 'GET':
return render(request, 'login.html')
else:
# username = request.POST.get('username')
# pwd = request.POST.get('pwd')
obj = LoginForm(request.POST)
print(obj) #
if obj.is_valid(): # , charField ,
print(obj.cleaned_data) #
else:
print(obj.errors) # , __str__,
return render(request, 'login.html', {'obj': obj})
forms 데이터 형식
Field
required=True,
widget=None, HTML
label=None, Label
initial=None,
help_text='', ( )
error_messages=None, {'required': ' ', 'invalid': ' '}
validators=[],
localize=False,
disabled=False,
label_suffix=None Label
CharField(Field)
max_length=None,
min_length=None,
strip=True
IntegerField(Field)
max_value=None,
min_value=None,
FloatField(IntegerField)
...
DecimalField(IntegerField)
max_value=None,
min_value=None,
max_digits=None,
decimal_places=None,
BaseTemporalField(Field)
input_formats=None
DateField(BaseTemporalField) :2015-09-01
TimeField(BaseTemporalField) :11:12
DateTimeField(BaseTemporalField) :2015-09-01 11:12
DurationField(Field) :%d %H:%M:%S.%f
...
RegexField(CharField)
regex,
max_length=None,
min_length=None,
error_message=None, , error_messages={'invalid': '...'}
EmailField(CharField)
...
FileField(Field)
allow_empty_file=False
ImageField(FileField)
...
: PIL ,pip3 install Pillow
, :
- form enctype="multipart/form-data"
- view obj = MyForm(request.POST, request.FILES)
URLField(Field)
...
BooleanField(Field)
...
NullBooleanField(BooleanField)
...
ChoiceField(Field)
...
choices=(), , :choices = ((0,' '),(1,' '),)
required=True,
widget=None, , select
label=None, Label
initial=None,
help_text='',
ModelChoiceField(ChoiceField)
... django.forms.models.ModelChoiceField
queryset, #
empty_label="---------", #
to_field_name=None, # HTML value
limit_choices_to=None # ModelForm queryset
ModelMultipleChoiceField(ModelChoiceField)
... django.forms.models.ModelMultipleChoiceField
TypedChoiceField(ChoiceField)
coerce = lambda val: val
empty_value= ''
MultipleChoiceField(ChoiceField)
...
TypedMultipleChoiceField(MultipleChoiceField)
coerce = lambda val: val
empty_value= ''
ComboField(Field)
fields=() , : 20,
fields.ComboField(fields=[fields.CharField(max_length=20), fields.EmailField(),])
MultiValueField(Field)
PS: , , MultiWidget
SplitDateTimeField(MultiValueField)
input_date_formats=None, :['%Y--%m--%d', '%m%d/%Y', '%m/%d/%y']
input_time_formats=None :['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']
FilePathField(ChoiceField) ,
path,
match=None,
recursive=False,
allow_files=True,
allow_folders=False,
required=True,
widget=None,
label=None,
initial=None,
help_text=''
GenericIPAddressField
protocol='both', both,ipv4,ipv6 IP
unpack_ipv4=False ipv4 , ::ffff:192.0.2.1 , 192.0.2.1, PS:protocol both
SlugField(CharField) , , , ( )
...
UUIDField(CharField) uuid
...
예시
# views.py
from django.shortcuts import render
# Create your views here.
from django.forms import Form
from django.forms import fields
class LoginForm(Form):
###
username = fields.CharField(
#$###
required=True,
max_length=16,
min_length=6,
error_messages = {
"required" : " ",
"max_length":" ",
"min_length":" ",
},
#validators=[], # ,
## html
# widget=fields.Select, #HTML , input ,select
label=' ', # Label
# initial='hahaha', #
help_text=' ', # ( )
# localize=False, # , UTC ,True
disabled = False, #
label_suffix = ">>>" # Label
)
pwd = fields.CharField()
age = fields.IntegerField(
required=True,
max_value=100,
min_value=0,
error_messages={
"required" : ' ',
"invalid" : ' ',
}
)
email = fields.EmailField(
error_messages={
"invalid" : ' ',
}
)
phone = fields.RegexField(
regex='^139\d{8}$'
)
# login POST ,GET
def login(request):
if request.method == 'GET':
obj = LoginForm()
return render(request, "login.html", {"obj":obj})
else:
# username = request.POST.get('username')
# pwd = request.POST.get('pwd')
obj = LoginForm(request.POST) ## {"username":'xx', 'pwd':'xx'}
if obj.is_valid():
print(obj.cleaned_data) ##
else:
print(obj.errors) ### __str__
return render(request, "login.html", {'obj':obj})
총결산
# {{ obj.as_p }} # p , {{ obj }}
# , , , , form novalidate , ,
# ,label_suffix ,
# ,
# , F12 id, css js
# ,
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.