概要
不正なデータを避けるために、確認するために、ユーザーによって提出されたデータをフィルタリングすることは、データの形式は、ユーザが入力したことを示唆し、提出しました。これらは、私たちがページ内に達成しなければならない機能です。たとえば、私たちは、この方法は、比較的頻繁に考えて、例えば、オンライン式セットを収集した偉大な神であるいくつかの一般的で検証するために、独自の正規表現を書くために使用することができ、元のMengchuo
Djangoのフォーム
前提
しかし、ジャンゴでは、我々はこれを達成するための最もシンプルで実用的な簡単な方法を持っている。
私たちは、簡単なサインアップページが始める必要があります:
# urls.py
url(r'^register/', views.Register.as_view(),name='register'),
# views.py
class Register(View):
def get(self, request):
return render(request, 'register.html',)
def post(self, request):
return HttpResponse("OK")
# register.html
<form action="{% url 'register' %}" method="post">
{% csrf_token %}
<p><input type="text" name="user"></p>
<p><input type="text" name="password"></p>
<p><input type="text" name="email"></p>
<p><input type="submit" name="提交"></p>
</form>
この文脈では、我々は、我々はおそらく簡単な例、それを制限するために何をすべきか、ユーザーが入力したデータを制限するために実行する必要があります。
- ユーザー名:6以上の長さの大きいが24未満である、特殊文字があることができ、英数字のみアンダースコアを空にすることはできませ
- パスワード:6よりも長さも大きいが32未満で、空にすることはできません
- Eメール:素敵なメールボックス形式は、空にすることはできません
上記の要件を達成するために
# views.py
class FormVerify(forms.Form):
username = fields.CharField(max_length=24,
min_length=6,
error_messages={
"required": "用户名不能为空",
'min_length': "长度小于6",
'max_length': "长度大于32",
})
email = fields.EmailField(
error_messages={
'required': "邮箱不能为空",
"invalid": "邮箱格式错误",
}
)
password = fields.CharField(
max_length=32,
min_length=6,
error_messages={
'required': "密码不能为空",
'min_length': "密码长度不能小于6",
'max_length': "密码长度不能大于32"
},
widget=widgets.PasswordInput()
)
class Register(View):
def get(self, request):
return render(request, 'register.html',)
def post(self, request):
return HttpResponse("OK")
手順説明:
- 継承forms.Formにカスタムクラスのニーズ
- クラスのフィールド名とフォームがデータを提出しなければならないが
name
、使用一貫性のあるfields
分野の様々なタイプ - そして、フィールド上の彼らが望む様々な制約を指定します
Djangoは内蔵の仕上げのフィールド
フィールドベースクラス
required 是否可以为空
label 等同于html中label,input框前面显示的内容
label_suffix lable显示内容与input之间的分隔符,例如冒号:
initial 初始值
widget 自定制生成html的标签
help_text input框显示的提示内容
error_messages 定制各种错误信息
validators=[] 自定制匹配规则
localize 本地化,一般会在时间上使用
disabled 可以将input设置成不可编辑状态
has_changed() 监测字段内容是否改变
show_hidden_initial=False, 是否在当前插件后面再加一个隐藏的且具有默认值的插件(可用于检验两次输入是否一直)
CharFieldです(フィールド)
テキストタイプ
Default widget: TextInput
max_length
min_length
strip=True 去掉输入中的空格
empty_value 空值的默认值
IntegerFieldと(フィールド)
整数型
max_value
min_value
FloatField(IntegerFieldと)
浮動小数点型
Default widget: NumberInput
Error message keys: required, invalid, max_value, min_value
DecimalFieldは(IntegerFieldと)
DECIMAL型
Default widget: NumberInput when Field.localize is False, else TextInput.
Error message keys: required, invalid, max_value, min_value, max_digits, max_decimal_places, max_whole_digits
max_value 最大值
min_value 最小值
max_digits 总长度
decimal_places 小数长度
ChoiceField(フィールド)
無線タイプ
Default widget: Select
Error message keys: required, invalid_choice
なMultipleChoiceField(ChoiceField)
複数の選択肢の種類
Default widget: SelectMultiple
Error message keys: required, invalid_choice, invalid_list
TypedMultipleChoiceField(なMultipleChoiceField)
とMultipleChoiceField
が、追加のパラメータを受け取りcoerce
とempty_value
Default widget: SelectMultiple
Error message keys: required, invalid_choice
GenericIPAddressField(CharFieldです)
IPアドレス
Default widget: TextInput
Error message keys: required, invalid
protocol 支持的IP地址类型: both (default), IPv4 or IPv6
unpack_ipv4 解析为ipv4地址,可以将::ffff:192.0.2.1解析为192.0.2.1
TypedChoiceField(ChoiceField)
とChoiceField
が、追加のパラメータを受け取りcoerce
とempty_value
Default widget: Select
Error message keys: required, invalid_choice
coerce 接收一个参数并返回强制转换后的值的一个函数
empty_value 空值的默认值
TimeField(BaseTemporalField)
時刻形式タイプ、datetime.time
オブジェクト
Default widget: TextInput
Error message keys: required, invalid
input_formats 如果未指定,默认类型:
'%H:%M:%S', # '14:30:59'
'%H:%M', # '14:30'
DateField(BaseTemporalField)
日付フォーマットタイプのdatetime.date
オブジェクト
Default widget: DateInput
Error message keys: required, invalid
input_formats: 默认格式(default):
['%Y-%m-%d', # '2006-10-25'
'%m/%d/%Y', # '10/25/2006'
'%m/%d/%y'] # '10/25/06'
但是在seettings中设置 USE_L10N=False,以下的格式也将包含在默认的输入格式中
['%b %d %Y', # 'Oct 25 2006'
'%b %d, %Y', # 'Oct 25, 2006'
'%d %b %Y', # '25 Oct 2006'
'%d %b, %Y', # '25 Oct, 2006'
'%B %d %Y', # 'October 25 2006'
'%B %d, %Y', # 'October 25, 2006'
'%d %B %Y', # '25 October 2006'
'%d %B, %Y'] # '25 October, 2006'
DateTimeField型(BaseTemporalField)
日付と時刻のフォーマットタイプ、datetime.datetime
オブジェクト
Default widget: DateTimeInput
Error message keys: required, invalid
input_formats 默认格式:
['%Y-%m-%d %H:%M:%S', # '2006-10-25 14:30:59'
'%Y-%m-%d %H:%M', # '2006-10-25 14:30'
'%Y-%m-%d', # '2006-10-25'
'%m/%d/%Y %H:%M:%S', # '10/25/2006 14:30:59'
'%m/%d/%Y %H:%M', # '10/25/2006 14:30'
'%m/%d/%Y', # '10/25/2006'
'%m/%d/%y %H:%M:%S', # '10/25/06 14:30:59'
'%m/%d/%y %H:%M', # '10/25/06 14:30'
'%m/%d/%y'] # '10/25/06'
- それは、1.7バージョンから使用を開かれます
SplitDateTimeWidget
EmailField(CharFieldです)
メールの種類
Default widget: EmailInput
Error message keys: required, invalid
URLField(CharFieldです)
URLタイプ
Default widget: URLInput
Error message keys: required, invalid
max_length
min_length
SlugField(CharFieldです)
数字、文字、アンダースコア、マイナス
Default widget: TextInput
Error messages: required, invalid
allow_unicode
FileFieldに(フィールド)
ファイルは、1つのUploadedFile
オブジェクトは、あなたが取得する後端部でこのオブジェクトを使用することができchunks
、ファイルを保存する方法を
Default widget: ClearableFileInput
Error message keys: required, invalid, missing, empty, max_length
max_length 文件最大长度
allow_empty_file 是否允许文件为空
FilePathField(ChoiceField)
ファイルパス、Unicodeオブジェクト
Default widget: Select
Error message keys: required, invalid_choice
path 路径
recursive Default is False 是否递归
match 自定义正则匹配,匹配这个表达式的名称才允许作为选项
allow_files Default is True 是否包含文件
allow_folders Default is False 是否包含文件夹
ImageField(FileFieldに)
ImageField使用する必要が枕をしてサポートしている画像フォーマットを使用するには、にUploadedFileオブジェクトは追加属性イメージを持っていますが、有効なイメージファイルをチェックするために、枕の例を備えた画像、およびは次のとおりです。
フォーム形式:enctype="multipart/form-data
ビューは機能します:obj = MyForm(request.POST, request.FILES)
Default widget: ClearableFileInput
Error message keys: required, invalid, missing, empty, invalid_image
RegexField(CharFieldです)
Default widget: TextInput
Error message keys: required, invalid
regex 自定义正则
strip Defaults to False 去除空格
バージョン1.8は廃止されており、中にはDjango 2.0で削除されますので、
UUIDField(CharFieldです)
マッチタイプUUID
Default widget: TextInput
Error message keys: required, invalid
ComboField(フィールド)
同時に、認証確認を複数用いて
Default widget: TextInput
Error message keys: required, invalid
fields=[]
fields=[CharField(max_length=20), EmailField()] 以邮件的方式匹配,但是长度不超过20
MultiValueField(フィールド)
抽象クラス、サブクラス辞書はMultiWidgetを結びつけるために使用される、重合可能な値の複数と一致するように実装することができます
Default widget: TextInput
Error message keys: required, invalid, incomplete
fields=()
require_all_fields Defaults to True
widget
compress(data_list)
SplitDateTimeField(MultiValueField)
有効なオブジェクト・タイプへの時間文字列
Default widget: SplitDateTimeWidget
Error message keys: required, invalid, invalid_date, invalid_time
input_date_formats=[]
['%Y--%m--%d', '%m%d/%Y', '%m/%d/%y']用于尝试将字符串转换为有效的datetime.date对象的格式列表。
input_time_formats=[]
['%H:%M:%S', '%H:%M:%S.%f', '%H:%M']用于尝试将字符串转换为有效的datetime.time对象的格式列表
ModelChoiceField(ChoiceField)
Default widget: Select
Error message keys: required, invalid_choice
queryset
empty_label
to_field_name
Error message keys: required, list, invalid_choice, invalid_pk_value
queryset
to_field_name
ModelMultipleChoiceField(ModelChoiceField)
Default widget: SelectMultiple
Empty value: An empty QuerySet
DurationField(フィールド)
Default widget: TextInput
Error message keys: required, invalid.
BooleanField(フィールド)
ブーリアン
Default widget: CheckboxInput
True or False value.
Error message keys: required
NullBooleanField(のBooleanField)
Default widget: NullBooleanSelect
True, False or None value.
カスタム
内蔵のは、あなたのニーズを満たすことができない場合は、カスタムマッチタイプをカスタマイズすることができます
- 私たちは、django.forms.Fieldを継承しなければなりません
- 彼のクリーン化を実現するためには()
- パラメータの例:(必須、ラベル、初期、ウィジェット、help_textに)