您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關ModelForm組件怎么在django框架中使用,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。
一 校驗字段
ModelForm組件的主要格式為:
繼承組件
from django import forms class UserModelForm(forms.ModelForm):
指定表
model = models.UserInfo
指定要顯示的字段
fields='__all__' #顯示所有,常用的方式
或者
exclude=['password'] #排除某個字段
或者
fields=['username','password','confirm_password','email','gender','depart'] #此表中的字段決定了頁面顯示的排列順序
插件:指定屬性或者設置字段類型
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'}), }
定制錯誤信息
error_messages = { 'email':{ 'required':'郵箱不能為空', 'invalid':'郵箱格式錯誤', } }
設置顯示的標簽名稱:
labels={"username":"用戶名","password":"密碼"}
設置鉤子函數
def clean_confirm_password(self): #'clean_'加上字段名 這里先使用局部鉤子
當設置了一個字段的鉤子函數時,最后必須要返回這個字段
return confirm
在函數中使用
def user_add(request): if request.method == 'GET': form = UserModelForm() #最開始訪問的時候是沒有數據的 return render(request, 'user_form.html', {'form':form}) form = UserModelForm(data=request.POST) #傳入數據 if form.is_valid(): #進行校驗 print(form.cleaned_data) form.save() return redirect('/crm/user/list/') return render(request, 'user_form.html', {'form': form})
區分 form.cleaned_data和form. errors
1 ModelForm組件對數據進行校驗的時候,對于校驗不合格的數據放入 form.errors
2 那么他們到底都長什么樣子呢
#print(form.cleaned_data) {'username': 'lu5', 'password': '123', 'gender': 1, 'depart': <Department: 部門-1>} #print(form.errors) <ul class="errorlist"><li>confirm_password<ul class="errorlist"><li>兩次密碼輸入不一致,請重新輸入</li></ul></li><li>email<ul class="errorlist"><li>郵箱格式錯誤</li></ul></li></ul>
一 校驗字段
下面一個例子:校驗用戶的信息,并且確認用戶的密碼
需要對原有數據進行編輯時,需要加入instance參數例如:
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本身就有對字段檢測的功能,只不過單純的是對空的判斷,一般顯示的錯誤信息是英文,我們要顯示為中文呢,怎么處理
LANGUAGE_CODE = 'zh-hans' # LANGUAGE_CODE = 'en-us'
上述就是小編為大家分享的ModelForm組件怎么在django框架中使用了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。