下面介紹forms模塊如何與後臺數據庫交互,把from提交過來的數據寫入到後臺數據庫中
froms與model結合使用
1、vim modes.py中創建數據表
from django.db import models
class admin(model.Model):
gender_tuple=(
(1,'男'),
(2,'女'),
)
username = models.Char Field(max_length=50)
email = models.CharField(max_length=50)
gender = models.CharField(max_length=50,choices=gender_tuple)
#choices=gender_tuple相當html中的select方法
vim forms.py
from django import forms
from app01 import models
class AdminModelForm(forms.ModelForm):
思路:如何讓ModelFrom與form建立關係
class Meta:
model = models.admin #models裏的admin表
fields =('username','email') #在html頁面指定顯示的input字段
自定義插件屬性
widgets = {
'email':forms.PasswordIput((attrs={'class':'auto'})),
}
2在setting.py中配置下數據庫連接信息
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'cmdb',
'USER':'root',
'PASSWORD':'tom123',
'HOST':'',
'PORT':'',
}
}
3初始化數據庫
python mange.py makemigrations
python mange.py syncdb
4.
views.py裏面寫一個生成用forms模塊input標籤的方法
def index3(request):
if request.method == ‘POST’: #判斷在html表單裏面提交的方式是什麼(一般是2種方式 post和get)
form = forms.AdminModelForm(request.POST)
AdminForm是在froms.py裏面的一個類,通過forms方法來調用,並賦值給form
if forms.is_valid(): #判斷是否合法,輸入錯誤的會在前端頁面提示錯誤信息
data = form.cleaned_data 請求通過接受該數據
form.save() #表示直接講數據存到數據庫中
else:#如果輸入規則不匹配在前臺顯示錯誤信息
print form.erros.as_data()
print form.erros.as_json()
print form.erros.as_text()
print form.erros.as_ul()
常見錯誤信息格式
else:
form = forms.AdminModelForm() #判斷如果不是post方法提交的
print fors.fields
return render_to_response(‘index3.html’,{‘model’:form})
#把結果返回給前端的index2.html,model是前端Index2.html裏面的一個變量用於接受後臺返回的數據,form是真實的數據
5.
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"/>
<title></title>
</head>
<body>
<form action='/index3/' method='POST'>
` model`.`as_table` 已table形式展示出來
` model`.`as_ul` 已ul形式展示出來
具體查看form父類裏面的詳細方法---源碼
好處省代碼
壞處樣式不可控
<input type='submit' value='提交' />
</form>
</body>
</html>
6.別忘了配置url,即在urls.py添加url指向