国产探花免费观看_亚洲丰满少妇自慰呻吟_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拿到的頁面太丑。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 昌图县| 上高县| 遵义市| 绥滨县| 日喀则市| 大埔区| 新民市| 五华县| 克什克腾旗| 桑植县| 尼木县| 乡城县| 射洪县| 武鸣县| 安阳县| 祁东县| 枝江市| 保定市| 西昌市| 临泉县| 曲周县| 团风县| 波密县| 亚东县| 民和| 璧山县| 射洪县| 清河县| 和政县| 香河县| 武强县| 泸西县| 乌海市| 中西区| 石狮市| 新邵县| 西峡县| 孙吴县| 昌邑市| 乳山市| 封开县|