欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

django框架ModelForm組件用法詳解

 更新時(shí)間:2019年12月11日 11:29:47   作者:dawn-liu  
這篇文章主要介紹了django框架ModelForm組件用法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Django框架ModelForm組件相關(guān)功能、原理、使用方法及操作注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了django框架ModelForm組件用法。分享給大家供大家參考,具體如下:

ModelForm組件是django中一個(gè)非常強(qiáng)大的組件,其功能主要有

一 校驗(yàn)字段

ModelForm組件的主要格式為:

繼承組件

from django import forms
class UserModelForm(forms.ModelForm):

指定表

model = models.UserInfo

指定要顯示的字段

fields='__all__'  #顯示所有,常用的方式

或者

exclude=['password'] #排除某個(gè)字段

或者

fields=['username','password','confirm_password','email','gender','depart'] #此表中的字段決定了頁(yè)面顯示的排列順序

插件:指定屬性或者設(shè)置字段類型

 widgets = {
      'username': forms.TextInput(attrs={'class': 'form-control', 'placeholder': '用戶名'}),
      'password': forms.PasswordInput(attrs={'class': 'form-control', 'placeholder': '密碼'}),
      'email': forms.EmailInput(attrs={'class': 'form-control', 'placeholder': '郵箱'}),
      'gender': forms.Select(attrs={'class': 'form-control'}),
      'depart': forms.Select(attrs={'class': 'form-control'}),
    }

定制錯(cuò)誤信息

    error_messages = {
      'email':{
        'required':'郵箱不能為空',
        'invalid':'郵箱格式錯(cuò)誤',
      }
    }

設(shè)置顯示的標(biāo)簽名稱:

labels={"username":"用戶名","password":"密碼"}

設(shè)置鉤子函數(shù)

def clean_confirm_password(self): #'clean_'加上字段名 這里先使用局部鉤子

當(dāng)設(shè)置了一個(gè)字段的鉤子函數(shù)時(shí),最后必須要返回這個(gè)字段

return confirm

在函數(shù)中使用

def user_add(request):
  if request.method == 'GET':
    form = UserModelForm() #最開(kāi)始訪問(wèn)的時(shí)候是沒(méi)有數(shù)據(jù)的
    return render(request, 'user_form.html', {'form':form})
  form = UserModelForm(data=request.POST) #傳入數(shù)據(jù)
  if form.is_valid(): #進(jìn)行校驗(yàn)
    print(form.cleaned_data)
    form.save()
    return redirect('/crm/user/list/')
  return render(request, 'user_form.html', {'form': form})

區(qū)分 form.cleaned_data和form. errors

1  ModelForm組件對(duì)數(shù)據(jù)進(jìn)行校驗(yàn)的時(shí)候,對(duì)于校驗(yàn)不合格的數(shù)據(jù)放入 form.errors
2  那么他們到底都長(zhǎng)什么樣子呢

#print(form.cleaned_data)
{'username': 'lu5', 'password': '123', 'gender': 1, 'depart': <Department: 部門(mén)-1>}
#print(form.errors)
<ul class="errorlist"><li>confirm_password<ul class="errorlist"><li>兩次密碼輸入不一致,請(qǐng)重新輸入</li></ul></li><li>email<ul class="errorlist"><li>郵箱格式錯(cuò)誤</li></ul></li></ul>

一 校驗(yàn)字段

下面一個(gè)例子:校驗(yàn)用戶的信息,并且確認(rèn)用戶的密碼

需要對(duì)原有數(shù)據(jù)進(jìn)行編輯時(shí),需要加入instance參數(shù)例如:

def user_edit(request,nid):
  obj = models.UserInfo.objects.filter(id=nid).first()
  if request.method == 'GET':
    form = UserModelForm(instance=obj) #注意此處
    return render(request, 'user_form.html', {'form':form})
  form = UserModelForm(data=request.POST,instance=obj) #注意此處
  if form.is_valid():
    form.save()
    return redirect('/crm/user/list/')
  return render(request, 'user_form.html', {'form': form})

另外:

django本身就有對(duì)字段檢測(cè)的功能,只不過(guò)單純的是對(duì)空的判斷,一般顯示的錯(cuò)誤信息是英文,我們要顯示為中文呢,怎么處理

LANGUAGE_CODE = 'zh-hans'
# LANGUAGE_CODE = 'en-us'

希望本文所述對(duì)大家基于Django框架的Python程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • Python實(shí)現(xiàn)的Kmeans++算法實(shí)例

    Python實(shí)現(xiàn)的Kmeans++算法實(shí)例

    這篇文章主要介紹了Kmeans和kmeans++算法,講解了Kmeans算法的缺點(diǎn)和kmeans++算法的實(shí)現(xiàn)思路,以及Python和matlab中實(shí)現(xiàn)的Kmeans++算法,需要的朋友可以參考下
    2014-04-04
  • Python實(shí)戰(zhàn)之看圖猜字游戲的實(shí)現(xiàn)

    Python實(shí)戰(zhàn)之看圖猜字游戲的實(shí)現(xiàn)

    看圖猜成語(yǔ),是考驗(yàn)一個(gè)人的反應(yīng)能力,也考驗(yàn)一個(gè)人的右腦思維。據(jù)說(shuō)越聰明的人,這道題的完成率越高。本文就來(lái)用Python實(shí)現(xiàn)這一經(jīng)典小游戲,需要的可以參考一下
    2023-02-02
  • 將python flask項(xiàng)目打包成可以運(yùn)行的軟件的全過(guò)程(包含報(bào)錯(cuò)解決)

    將python flask項(xiàng)目打包成可以運(yùn)行的軟件的全過(guò)程(包含報(bào)錯(cuò)解決)

    這篇文章主要給大家介紹了將python flask項(xiàng)目打包成可以用運(yùn)行的軟件(包含報(bào)錯(cuò)解決),文中通過(guò)代碼示例和圖文結(jié)合講解的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-02-02
  • python里對(duì)list中的整數(shù)求平均并排序

    python里對(duì)list中的整數(shù)求平均并排序

    本文主要記述了使用Python將list重點(diǎn)整數(shù)求平均值之后在進(jìn)行排列的過(guò)程,并把代碼分享給大家,希望大家能給鼓鼓掌~~~
    2014-09-09
  • Django基礎(chǔ)三之視圖函數(shù)的使用方法

    Django基礎(chǔ)三之視圖函數(shù)的使用方法

    這篇文章主要介紹了Django基礎(chǔ)三之視圖函數(shù)的使用方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 詳解操作python容器的內(nèi)置通用函數(shù)

    詳解操作python容器的內(nèi)置通用函數(shù)

    這篇文章主要為大家介紹了操作python容器的內(nèi)置通用函數(shù),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-12-12
  • pycharm遠(yuǎn)程連接docker容器的操作流程

    pycharm遠(yuǎn)程連接docker容器的操作流程

    這篇文章主要給大家介紹了pycharm遠(yuǎn)程連接docker容器的操作流程,文中通過(guò)代碼示例和圖文講解介紹的非常詳細(xì),具有一定的參考價(jià)值,需要的朋友可以參考下
    2023-08-08
  • PyTorch零基礎(chǔ)入門(mén)之構(gòu)建模型基礎(chǔ)

    PyTorch零基礎(chǔ)入門(mén)之構(gòu)建模型基礎(chǔ)

    PyTorch是一個(gè)開(kāi)源的Python機(jī)器學(xué)習(xí)庫(kù),基于Torch,用于自然語(yǔ)言處理等應(yīng)用程序,它是一個(gè)可續(xù)計(jì)算包,提供兩個(gè)高級(jí)功能:1、具有強(qiáng)大的GPU加速的張量計(jì)算(如NumPy)。2、包含自動(dòng)求導(dǎo)系統(tǒng)的深度神經(jīng)網(wǎng)絡(luò)
    2021-10-10
  • Python集合中remove()函數(shù)的使用方法詳解

    Python集合中remove()函數(shù)的使用方法詳解

    這篇文章主要給大家介紹了關(guān)于python集合中remove()函數(shù)的使用,以及在使用Python集合的remove方法時(shí)應(yīng)注意的事項(xiàng),文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-07-07
  • Python中實(shí)現(xiàn)定時(shí)任務(wù)常見(jiàn)的幾種方式

    Python中實(shí)現(xiàn)定時(shí)任務(wù)常見(jiàn)的幾種方式

    在Python中,實(shí)現(xiàn)定時(shí)任務(wù)是一個(gè)常見(jiàn)的需求,無(wú)論是在自動(dòng)化腳本、數(shù)據(jù)處理、系統(tǒng)監(jiān)控還是其他許多應(yīng)用場(chǎng)景中,Python提供了多種方法來(lái)實(shí)現(xiàn)定時(shí)任務(wù),包括使用標(biāo)準(zhǔn)庫(kù)、第三方庫(kù)以及系統(tǒng)級(jí)別的工具,本文將詳細(xì)介紹幾種常見(jiàn)的Python定時(shí)任務(wù)實(shí)現(xiàn)方式
    2024-08-08

最新評(píng)論