国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

Python探索之ModelForm代碼詳解

2020-02-16 10:29:31
字體:
來源:轉載
供稿:網友

這是一個神奇的組件,通過名字我們可以看出來,這個組件的功能就是把model和form組合起來,對,你沒猜錯,相信自己的英語水平。

先來一個簡單的例子來看一下這個東西怎么用:

比如我們的數據庫中有這樣一張學生表,字段有姓名,年齡,愛好,郵箱,電話,住址,注冊時間等等一大堆信息,現在讓你寫一個創建學生的頁面,你的后臺應該怎么寫呢?

首先我們會在前端一個一個羅列出這些字段,讓用戶去填寫,然后我們從后天一個一個接收用戶的輸入,創建一個新的學生對象,保存

其實,重點不是這些,而是合法性驗證,我們需要在前端判斷用戶輸入是否合法,比如姓名必須在多少字符以內,電話號碼必須是多少位的數字,郵箱必須是郵箱的格式這些

當然可以一點一點手動寫限制,各種判斷,這毫無問題,除了麻煩

我們現在有個更優雅(以后在Python相關的內容里,要多用“優雅”這個詞,并且養成習慣)的方法:ModelForm

先來簡單的,生硬的把它用上,再來加驗證條件:

首先導入ModelForm

from django.forms import ModelForm

在視圖函數中,定義一個類,比如就叫StudentList,這個類要繼承ModelForm,在這個類中再寫一個原類Meta(規定寫法,并注意首字母是大寫的)

在這個原類中,有以下屬性(部分):

class StudentList(ModelForm):  class Meta:    model = models.Student #對應的Model中的類    fields = "__all__"   #字段,如果是__all__,就是表示列出所有的字段    exclude = None     #排除的字段    labels = None      #提示信息    help_texts = None    #幫助提示信息    widgets = None     #自定義插件    error_messages = None  #自定義錯誤信息#error_messages用法:    error_messages = {      'name':{'required':"用戶名不能為空",},      'age':{'required':"年齡不能為空",},    }#widgets用法,比如把輸入用戶名的input框給為Textarea#首先得導入模塊    from django.forms import widgets as wid #因為重名,所以起個別名    widgets = {      "name":wid.Textarea(attrs={"class":"c1"}) #還可以自定義屬性    }#labels,自定義在前端顯示的名字    labels= {      "name":"用戶名"    }

然后在url對應的視圖函數中實例化這個類,把這個對象傳給前端

def student(request):  if request.method == 'GET':    student_list = StudentList()    return render(request,'student.html',{'student_list':student_list})

然后前端只需要     {{ student_list.as_p }}   一下,所有的字段就都出來了,可以用as_p顯示全部,也可以通過for循環這student_list,拿到的是一個個input框,現在我們就不用as_p,手動把這些input框搞出來,as_p拿到的頁面太丑。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 莎车县| 周宁县| 同德县| 丰台区| 晴隆县| 南木林县| 东乡县| 高平市| 濉溪县| 北票市| 淮南市| 灌云县| 内黄县| 伽师县| 南岸区| 文登市| 赫章县| 巩义市| 庆安县| 太仆寺旗| 安新县| 新蔡县| 桃园县| 贵溪市| 腾冲县| 元江| 通州市| 金门县| 高唐县| 三台县| 应用必备| 瓦房店市| 彰化市| 田东县| 黄梅县| 游戏| 绥芬河市| 钟山县| 洛阳市| 雷波县| 拉孜县|