通過django froms模塊生成html input標籤
首先在當前應用下創建一個forms.py的文件
vim forms.py
from django import forms
def forms.AdminForm(forms.Form):
username = forms.CharField() #生成明文的輸入框
password = forms.CharField(widget=forms.widgets.PasswordInput)
#生成一個密文顯示的輸入框
password = forms.CharField(widget=forms.widgets.PasswordInput(attrs={'class':'auto'}))
(attrs={'class':'auto'}) #定義標籤屬性
email1 = forms.CharField(widget=forms.widgets.EmailInput)
email2 = forms.EmailField()
#widget類型是通過正則表達式來判定的
views.py裏面寫一個生成用forms模塊input標籤的方法
def index2(request):
if request.method == ‘POST’:
#判斷在html表單裏面提交的方式是什麼(一般是2種方式 post和get)
form = forms.AdminForm(request.POST)
#AdminForm是在froms.py裏面的一個類,通過forms方法來調用,並賦值給form
if forms.is_valid():
#判斷是否合法,輸入錯誤的會在前端頁面提示錯誤信息
data = form.cleaned_data #請求通過接受該數據
m = AdminForm(username='tom',password='tom123')
#AdminForm裏面提交數據,並保存
m.save()
else:#如果輸入規則不匹配在前臺顯示錯誤信息
print form.erros.as_data()
print form.erros.as_json()
print form.erros.as_text()
常見錯誤信息格式
else:
form = forms.AdminForm()
#判斷如果不是post方法提交的
return render_to_response(‘index2.html’,{‘model’:form})
#把結果返回給前端的index2.html,model是前端Index2.html裏面的一個變量用於接 受後臺返回的數據,form是真實的數據
3.index2.html內容
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"/>
<title></title>
</head>
<body>
<form action='/index2/' method='POST'>
<p>用戶名:`model`.`username`</p>
<p>密碼:`model`.`password`</p>
<p>郵箱:`model`.`email`</p>
<input type='submit' value='提交' />
</form>
</body>
</html>
優化之後的,更簡潔的省去很多html代碼
<html>
<head>
<meta http-equiv="Content-Type" content="text/html"/>
<title></title>
</head>
<body>
<form action='/index2/' method='POST'>
` model`.`as_table` 已table形式展示出來
` model`.`as_ul` 已ul形式展示出來
#具體查看form父類裏面的詳細方法---源碼
#好處省代碼
#壞處樣式不可控
<input type='submit' value='提交' />
</form>
</body>
</html>