Djangoのフォームフォームの検証と検証の分野

概要

不正なデータを避けるために、確認するために、ユーザーによって提出されたデータをフィルタリングすることは、データの形式は、ユーザが入力したことを示唆し、提出しました。これらは、私たちがページ内に達成しなければならない機能です。たとえば、私たちは、この方法は、比較的頻繁に考えて、例えば、オンライン式セットを収集した偉大な神であるいくつかの一般的で検証するために、独自の正規表現を書くために使用することができ、元の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")

手順説明:

  1. 継承forms.Formにカスタムクラスのニーズ
  2. クラスのフィールド名とフォームがデータを提出しなければならないがname、使用一貫性のあるfields分野の様々なタイプ
  3. そして、フィールド上の彼らが望む様々な制約を指定します

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が、追加のパラメータを受け取りcoerceempty_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が、追加のパラメータを受け取りcoerceempty_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に)

おすすめ

転載: www.cnblogs.com/forsaken627/p/12521955.html