ジャンゴ-11-形成する成分

1.概要

DjangoのFormコンポーネントは、一般的に2つの機能があります。

  • ユーザー入力を検証します
  • HTMLコードが生成されます

Formクラスを作成します。

django.shortcutsから、レンダリングリダイレクトインポート
Djangoのインポートフォームから
django.formsからフィールドをインポート


:クラスF1Form(forms.Form)
    ユーザー= fields.CharField(
        MAX_LENGTH = 18、
        MIN_LENGTH = 6を、
        必要=真、
        error_messagesは= { 
            '必要' : '不能为空'、
            'MIN_LENGTH': '太短了'、
            'MAX_LENGTH': '太长了'、
            '無効': '输入格式错误' 
        } 
    PWD = fields.CharField(
        MIN_LENGTH = 8、
        MAX_LENGTH = 16、
        必須=真、
        error_messages = { 
            '必要': 'あなたは」空にすることはできません、 
            'MIN_LENGTH': '「短すぎます 
            'MAX_LENGTH': 'が長すぎます'、
            '無効': '入力フォーマットエラー' 
        } 
    年齢= fields.IntegerField(
        = Trueの必要、
        error_messages、= { 
            '必要':「ではありません空」、
            '無効':'入力フォーマットエラー' 
        } 

    メールに= fields.EmailField(
        必須=真、
        error_messages、= { 
            '必要':'が空ではない'、
            '無効':'入力フォーマットエラー' 
        } 

ビュー機能

DEF F1(要求):
    request.method場合== 'GET':
        OBJ = F1Form()
        リターンレンダリング(要求、 'f1.html' { 'OBJ':OBJ})
    他:
        #ユーザー= request.POST.get ( 'ユーザー')
        #1 PWD = request.POST.get( 'PWD') 年齢= request.POST.get( '年齢') メール= request.POST.get( 'メール')
        OBJ = F1Form(要求。 POST)
        验证输入
        ()obj.is_valid場合:
            印刷( '验证成功'、obj.cleaned_data)
            リターンリダイレクト( '/ F1')
        他:
            プリント( '验证失败'、obj.errorsは)
            '、(要求をレンダリング返しますf1.html」、{ '' OBJ:OBJ})

HTMLコードが生成されます

<!DOCTYPE HTML> 
{%負荷staticfiles%} 
<HTMLのlang = "EN"> 
<HEAD> 
    <メタのcharset = "UTF-8"> 
    <タイトル>タイトル</タイトル> 
</ head> 
<body> 
<フォームアクション= "/ F1" METHOD = "POST"> 
    <P> {{obj.user}}、{{obj.user.errors.0}} </ P> 
    <P> {{obj.pwd}}、{{OBJ。 pwd.errors.0}} </ P> 
    <P> {{obj.age}}、{{obj.age.errors.0}} </ P> 
    <P> {{obj.email}}、{{OBJ。 email.errors.0}} </ P> 
    の<input type = "提出"値= "提交"> 
</ FORM> 
</ BODY> 
</ HTML>

2.フォームフィールド

正規表現を保存するには

フィールド、
    許可するかどうか、= Trueの必要なヌル
    ウィジェット=なし、HTMLプラグ
    ラベル=なし、または表示内容のラベルラベルを生成するための
    初期=なし、初期値
    help_textに=「」、(ラベルの隣に示した)情報を助ける
    error_messages、=なしに、エラーメッセージ{「必要」:「ていない空の」、「無効」:「不正な形式」} 
    電流プラスプラグとプラグの背後に隠され、2つの入力かどうかを試験するために使用することができる(デフォルト値を有しているかどうか、偽= show_hidden_​​initialき)
    = []、カスタム検証ルールはバリデーター
    ローカリゼーションをサポートするかどうか、= Falseのローカライズ
    編集することができた場合、= Falseの無効を
    label_suffix =なしラベルの内容をサフィックス
 
 
CharFieldです(フィールド)
    MAX_LENGTH =なし、最大長
    MIN_LENGTH =なし、最小の長さを
    ユーザ入力ブランク削除するかどうかをストリップ=真
 
IntegerFieldと(フィールド)
    MAX_VALUE =なし、最大
    MIN_VALUE =なし、最小
 
FloatField(IntegerFieldと)
    ... 
 
DecimalFieldは(IntegerFieldと)
    MAX_VALUE =なし、最大
    MIN_VALUE =なし、最小
    max_digits =なし、全長
    decimal_places =なし、小数ビット長
 
BaseTemporalField(フィールド)
    input_formats =なし時間形式    
 
のDateField(BaseTemporalField)フォーマット:2015年9月1日
TimeField(BaseTemporalField)フォーマット:. 11:12である
DateTimeField型(BaseTemporalField)フォーマット:2015年9月1日11時12 
 
DurationField(フィールド)時間間隔:%のDの%のH:%のM:%F%S. 
    ... 
 
RegexField(CharFieldですとして)
    REGEX、カスタム正規表現
    MAX_LENGTH =なし、最大長
    MIN_LENGTH =なし、最小長
    :ERROR_MESSAGE =なし、= { '...' error_messages、 '無効'}使用されるエラーメッセージを無視
 
EmailField(CharFieldですなど)       
    ... 
 
FileFieldに(フィールド、)
    空のファイルを許可するかどうかをallow_empty_file = Falseの
 
のImageField(FileFieldにする)       
    ... 
    注:PILモジュールのニーズ、PIP3枕をインストールする
    2つの以上の辞書が使用される場合には、二つのことに注意する必要があります
        -フォームフォームにenctype =「multipart / form-データ 」 
        - MyFormを=関数OBJを表示する(request.POST、request.FILESの)
 
URLField(フィールド)
    ... 
 
 
のBooleanField(フィールド)   
    ... 
ChoiceField(フィールド)
    ···
  
NullBooleanField(のBooleanField)
    ... 
ModelMultipleChoiceField(ModelChoiceField)
 
    選択肢=()、などのオプション:選択=((0、 '上海')、(1、 '北京')、)
    必要= Trueの場合、必要に応じて
    ウィジェット=なしには、プラグインは、デフォルトのプラグインを選択し
    たラベル=なし、ラベルをコンテンツ
    初期=なし、初期値
    help_textに= ''、ヘルプのヒント
 
 
ModelChoiceField(ChoiceField)
    ... django.forms.models.ModelChoiceField 
    データベースでクエリセット、#クエリデータ
    empty_label = "---------"、 #空のデフォルトの表示内容
    to_field_name =なし、値フィールド内の値に対応する#のHTML 
    limit_choices_to =なし#のModelForm二次スクリーニングクエリセット
     
    ... django.forms.models.ModelMultipleChoiceField 
 
 
     
TypedChoiceField(ChoiceField)
    強制=ラムダヴァル:valが選択された変換の値である
    デフォルト値は=「」ヌルempty_value 
 
なMultipleChoiceField(ChoiceField)
    ... 
 
TypedMultipleChoiceField(なMultipleChoiceField)
    各選択された値のためにvalが変換である:強制=ラムダvalを
    empty_value = 「デフォルトNULL値
 
ComboField(フィールド)
    検証を複数用いたフィールド=()、次のように:すなわち、20バリデーションの最大長さ、検証およびメールボックス形式
                               fields.ComboField(フィールド= [fields.CharField(MAX_LENGTH = 20)、フィールド。 EmailField()])
 
MultiValueField(フィールド)
    PS:抽象クラス、サブクラス、重合はMultiWidget用で使用する辞書の複数の値と一致するように実装することができる 
    input_time_formats =なしリスト形式:[' %のH:%のM :%のS'、' %H:%のM: %S.%F」、 '%のH:%のM']
  
SplitDateTimeField(MultiValueField)を
    input_date_formats =なし、リスト形式:[ '%Y - %のM - %のD'、D 'の%%のM /%Y'、 '%のM /%D /%Y'] 
 
そのFilePathField意志(ChoiceField)ファイルオプション、ディレクトリファイルがページに表示される
    パスへのフォルダパス
    =なし、通常のマッチング一致していない
    = Falseを再帰的に、再帰的にフォルダ以下
    allow_files = Trueの場合、ファイルができます
    フォルダ許可、偽allow_foldersを= 
    必要= Trueの場合、
    ウィジェット=なし、
    =なしラベルを、
    初期=なし、
    help_textに= '' 
 
GenericIPAddressField 
    プロトコル= 'both-'、both-、IPv4の、IPv6のサポートIP形式
    unpack_ipv4 = Falseの解決のIPv4アドレスは、:: FFFFの場合:192.0.2.1 192.0.2.1に解決、 PS:このプロトコルは、両方のために有効にする必要があります
 
SlugField(CharFieldです)、数字、文字、アンダースコア、マイナス(ハイフン)
    ...
 
UUIDField(CharFieldです)UUIDタイプ
    ...

3. HTMLプラグイン

HTMLタグを生成するための(唯一のフォームクラスを形成します)

TextInput(入力)
NumberInput(TextInputコントロール)
EmailInput(TextInputコントロール)
URLInput(TextInputコントロール)
PasswordInput(TextInputコントロール)
HiddenInput(TextInputコントロール)
テキストエリア(ウィジェット)
日付入力(DateTimeBaseInput)
DateTimeInput(DateTimeBaseInput)
TimeInput(DateTimeBaseInput)
CheckboxInput 
選択
NullBooleanSelect 
とselectMultiple 
RadioSelect 
CheckboxSelectMultiple 
FileInputクラス
ClearableFileInput 
MultipleHiddenInput 
SplitDateTimeWidget 
SplitHiddenDateTimeWidget 
SelectDateWidget

一般的なプラグイン

#単一の無線、文字列値
#= fields.CharFieldユーザー(
#初期= 2、
#= widgets.RadioSelectウィジェット(選択肢=((1 '上海')、(2 '北京'))) 
#)
 
#単一の無線、文字列値
#= fields.ChoiceFieldユーザー(
#選択肢=((1 '上海')、(2 '北京')、)、
#=初期2、
#= widgets.RadioSelectウィジェット
#)
 
#単一の選択、文字列値
#= fields.CharFieldユーザー(
#初期= 2、
#= widgets.Selectウィジェット(選択肢=((1 '上海')、(2 '北京'))) 
#)
 
#単一の選択、文字列値
#= fields.ChoiceFieldユーザー(
#選択肢=((1 '上海')、(2 '北京')、)、
#=初期2、
#=ウィジェットウィジェット。SELECT 
#) 
 複数の選択肢を選択し、値リスト
ユーザfields.MultipleChoiceField =#(
#=選択肢((1 '上海')、(2 '北京')、)、 初期= [1、]、
#= widgets.SelectMultipleウィジェット
#) 
 
 単一のCheckBox 
#ユーザfields.CharField =(
#= widgets.CheckboxInputウィジェット() 
#)
 
 
チェックボックス複数の選択肢、値リスト
#= fields.MultipleChoiceFieldユーザー(
=初期#[2]、 選択肢=((1 '上海')、 (2 '北京')、)、
#= widgets.CheckboxSelectMultipleウィジェット
#)

4.動的データのバインド

selectタグを使用するときは、オプションの選択に注意を払う必要があり、データベースから取得することができるが、それは、静的フィールドの値であるため、更新することはできません*** ***リアルタイムに取得する、あなたは、この目的を達成するための設定方法をカスタマイズする必要があります。

モード1(推奨):

django.formsからフォームをインポート
django.formsからウィジェットインポート
django.formsからフィールドをインポート
django.core.validatorsからRegexValidatorのインポート
 
クラスMyFormを(フォーム):
    ユーザー= fields.ChoiceField(
        ウィジェット= widgets.Select 
 
    デフ__init __(自己、*引数、** kwargsから):
        スーパー(MyFormを、自己).__のinit __(* argsを、** kwargsから)
        。self.fields [ 'ユーザー'] = widget.choices models.Classes.objects.all()VALUE_LIST( 'ID。 '、'キャプション')  

第二の方法:

使用ModelChoiceFieldとModelMultipleChoiceFieldフィールドDjangoは満たすために提供します

Djangoのインポートフォームから
django.formsのフィールドインポート
django.formsからウィジェットをインポート
django.formsからform_modelとしてモデルをインポート
django.core.exceptionsからValidationErrorをインポート
django.core.validatorsからRegexValidatorインポート
 
クラスたFInfo(forms.Form):
    =著者form_model.ModelMultipleChoiceField(クエリセット= models.NNewType.objects.all()) の作者= form_model.ModelChoiceField(クエリセット= models.NNewType.objects.all())

 

おすすめ

転載: www.cnblogs.com/lsf123456/p/11476849.html