Django 擁有本身獨立的表單功能塊,能夠完成:前端
一、表單的定義數據庫
二、表單的校驗django
三、表單的前端樣式app
等功能,方便咱們開發,那麼接下來,咱們看一下表單的定義ui
首先咱們肯定咱們要編寫的功能,一個提供給博客的訪客發送本身的聯繫方式的功能。而且搭建相對應的數據庫url
1 from django.db import models 2 3 class Connection(models.Model): 4 con_name = models.CharField(max_length = 32,verbose_name = "聯繫人姓名") 5 con_phone = models.CharField(max_length=32, verbose_name="聯繫人姓名") 6 con_email = models.EmailField(verbose_name="聯繫人姓名") 7 8 def __str__(self): 9 return "%s : %s"%(self.con_name,self.con_email)
表單的定義spa
form表單的定義經過Django下面的form類進行定義,過程和Django的模型定義相似,首先在app目錄當中建立form定義的專屬文件form.py,而後開始咱們的編寫。code
經常使用的表單定義方法有兩種:orm
一、 常規定義,咱們按照與model模型定義相似的定義方法定義表單blog
1 #coding:utf-8 2 from django import forms 3 4 class ConnectionForm(forms.Form): 5 con_name = forms.CharField(max_length = 32,label = "聯繫人姓名") 6 con_phone = forms.CharField(max_length=32, label="聯繫人姓名") 7 con_email = forms.EmailField(label="聯繫人姓名")
這樣咱們就定義了一個表單,這個表單和上面講課用的聯繫人表單的效果是如出一轍的。固然慣用form字段裏面經常使用的字段和對應的參數,也給你們列出 來:
經常使用的字段
1、charfield 對應單行輸入框
2、booleanfield 對應checkbox選擇框
3、choicefield 對應下拉菜單選擇框 重要參數choice
4、datafield 對應一個單行輸入框,可是會自動轉化爲日期類型
5、emailfield 對應輸入框,自動驗證是不是郵件地址
6、filefield 對應文件上傳選項
7、filepathfiled 對應一個(文件組成的下拉菜單)選擇,必須參數path=''.選項爲這個地址裏邊全部的文件。可選參數recursive=True是否包含子文件夾裏的文件
8、imagefield 圖片上傳按鈕。須要pillow模塊
9、urlfield 對應輸入框 自動驗證是否爲網址格式
字段經常使用的參數
1、rqeuired 字段是否爲必填 默認爲True
2、label 相似於輸入框前邊的提示信息
3、initial 初始值(佔位符)就是給出一個默認值
4、help_text 字段的輔助描述
5、error_message={} 覆蓋{{form.name.error}}信息
6、disable 字段是否能夠修改
7、widget 負責渲染網頁上HTML表單的輸入元素和提取提交的原始數據。
8、max_length 最大長度
9、min_length 最小長度
二、對應Django模型定義
爲了保證咱們定義的表單模型和數據庫提交模型的一致性,咱們能夠經過Form表單類當中嵌套元類Meta來實現經過模型快速的定義表單
1 #coding:utf-8 2 from django import forms 3 from Article.models import Connection #首先導入要對接的數據庫 4 class ConnectionForm(forms.ModelForm): #注意,咱們如今繼承的是ModelForm而不是Forms 5 class Meta: #這是一個元類 6 model = Connection #指定models對應的模型 7 fields = ["con_name","con_phone","con_email"] #指定顯示的字段
固然,這麼簡單的代碼只能完成最簡單的效果,咱們還須要一些經常使用的參數
一、fields 要展現的字段,接收的是一個列表,若是不寫默認是models的全部字段
二、exclude 不要展現的字段,接收的是一個列表,排除的字段,默認沒有
三、widgets 是一個模型字段的名稱對應的樣式的字典
四、labels 是一個模型字段的名稱對應的標籤的字典
五、help_texts 是一個模型字段的名稱對應的幫助文檔的字典
六、error_messages是一個模型字段的名稱對應的錯誤提示的字典
這種寫法使用的比較少,舉一個例子來看看對應Django模型定義表單的參數使用
1 #coding:utf-8 2 from django import forms 3 from Article.models import Connection #首先導入要對接的數據庫 4 class ConnectionForm(forms.ModelForm): #注意,咱們如今繼承的是ModelForm而不是Forms 5 class Meta: #這是一個元類 6 model = Connection #指定models對應的模型 7 fields = ["con_name","con_phone","con_email"] #指定顯示的字段 8 widgets = { 9 "con_name": forms.TextInput(attrs = {"style":"font-size:20px;"}), 10 "con_phone": forms.TextInput(attrs={"style": "font-size:20px;"}), 11 "con_email": forms.TextInput(attrs={"style": "font-size:20px;"}) 12 } #指定對應標籤的樣式