Django Form元件之欄位

2022-09-04 10:18:07 字數 4823 閱讀 2664

建立form類時,主要涉及到 【字段】 和 【外掛程式】,字段用於對使用者請求資料的驗證,外掛程式用於自動生成html;

field

required=true, 是否允許為空

widget=none, html外掛程式(from django.forms import widgets) 設定屬性:widget=forms.textinput(attrs=),

label=none, 用於生成label標籤或顯示內容(前端obj.label--> 使用者名稱:【】(輸入框))

initial=none, 初始值

help_text='', 幫助資訊(在標籤旁邊顯示)

error_messages=none, 錯誤資訊

show_hidden_initial=false, 是否在當前外掛程式後面再加乙個隱藏的且具有預設值的外掛程式(可用於檢驗兩次輸入是否一直)

validators=, 自定義驗證規則(正規表示式)

localize=false, 是否支援本地化(比如時間資料,當地時間,utc時間(比如東八區,自動加8小時))

disabled=false, 是否可以編輯

label_suffix=none label內容字尾

下面的呼叫方法都可以穿入上述引數

charfield(field)

max_length=none, 最大長度

min_length=none, 最小長度

strip=true 是否移除使用者輸入空白

widget=none, widget 的預設渲染html標籤是 label=none 預設值是欄位名

integerfield(field)

max_value=none, 最大值

min_value=none, 最小值

widget=none, widget 的預設渲染html標籤是 label=none 預設值是欄位名

floatfield(integerfield)

max_value=none, 最大值

min_value=none, 最小值

widget=none, widget 的預設渲染html標籤是 label=none 預設值是欄位名

decimalfield(integerfield)

max_value=none, 最大值

min_value=none, 最小值

max_digits=none, 總長度

decimal_places=none, 小數字長度

widget=none, widget 的預設渲染html標籤是 label=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=

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, # 查詢資料庫中的資料(寫model方法,該方法會在前端顯示object,需要去對應的model寫__str__)

empty_label="---------", # 預設空顯示內容(比如下拉框第一行顯示"請選擇")

to_field_name=none, # html中value的值對應的字段(注意是標籤中的value)

limit_choices_to=none # modelform中對queryset二次篩選

modelmultiplechoicefield(modelchoicefield)

... django.forms.models.modelmultiplechoicefield

typedchoicefield(choicefield)

coerce = lambda val: val 對選中的值進行一次轉換(通常choice欄位後端會受到字串,如"1",但此處可以轉化 比如int)

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格式

slugfield(charfield) 數字,字母,下劃線,減號(連字元)(只能包含這些)

...uuidfield(charfield) uuid型別

...

Django Form 所有內建字段

field required true,是否允許為空 widget none,html外掛程式 label none,用於生成label標籤或顯示內容 initial none,初始值 help text 幫助資訊 在標籤旁邊顯示 error messages none,錯誤資訊 validator...

Django Form元件 基於原始碼的擴充套件

class ajaxform forms.form username fields.charfield user id fields.integerfield widget widgets.select choices 0,張三 1,李四 2,王五 通過原始碼可得,當欄位通過正則驗證後,會執行cle...

Vue元件之全域性元件與區域性元件

元件 component 是 vue.js 最強大的功能之一。元件可以擴充套件 html 元素,封裝可重用的 在較高層面上,元件是自定義元素,vue.js 的編譯器為它新增特殊功能。在有些情況下,元件也可以是原生 html 元素的形式,以 is 特性擴充套件。個人認為就是乙個可以重複利用的結構層 片...