參考文檔:html
1、簡單的Form表達定製前端
1)首先咱們得定製Form表單類,下面咱們建立一個簡單的類:python
class BookForm(forms.Form): bookname = forms.CharField(max_length=10) publish_date = forms.DateField()
2)在視圖中引用:數據庫
def book(request): #Froms將會是一個html實例 Froms = forms.BookForm() return render(request,"app01/book.html",{"bk":Froms})
3)咱們再定製模板來接收Froms的值:django
<div class="container"> <form class="form-horizontal" action="" method="post"> {{ bk }} <input type="submit" value="commit"> </form> </div>
這樣當咱們訪問指定頁面時,能看定製的Form表單:api
按F12,再查看代碼標籤,這就是Froms實例化後的html代碼:app
2、forms表單屬性設置:post
class BookForm(forms.Form): publish_id_choice = { (0,u'a出版社'), (1,u'b出版社'), } publish_id = forms.IntegerField(widget=forms.widgets.Select(choices=publish_id_choice,attrs={'class':'form-contorl'})) bookname = forms.CharField(max_length=10, min_length=5, error_messages={ 'required':u'書名不能爲空', 'max_length':u'不能多餘10個字', 'min_length':u'不能少於5個字', }, widget=forms.TextInput(attrs={'class':'form-contorl','palceholder':u'標題很多於5字'})) publish_date = forms.DateField()
如上,咱們能夠設置最大最小長度,錯誤消息,自定義select,設置html標籤的class屬性值,生成的html源代碼以下:ui
3、ModelFormorm
根據model自動生成form表單:
def bookmodel(request): if request.method == 'GET': Form = forms.BookModelForm() elif request.method == 'POST': Form = forms.BookModelForm(request.POST) if Form.is_valid(): form_data = Form.cleaned_data print(form_data) Form.save() return render(request,'app01/book.html',{"bk":Form})
生成的前端樣式 , HTML 取表單數據{{ bk }} :
Form.save()方法能直接保存提交的數據到數據庫。
其餘方法去表單數據:
{% for i in bk %} {{ i.label_tag}} {{ i }} {% endfor %} <hr> {% for i in bk %} {{ i.label}} {{ i }} {% endfor %} <hr> {% for i in bk %} {{ i.name}} {{ i }} {% endfor %}
# 前端生成的html源代碼:
分別對應的前端樣式,能夠看到i.label_tag是取對應label的整個html值,i.label是取對應的label中的text值, i.name是取i的name的值,i.errors取出錯誤: