django中内置了form和model兩個類,有時候頁面的表單form類與model類是一一對應,是以分别定義form類和model類會比較麻煩,最簡單的方式就是通過model來生成一個form類,django内置的modelform就是為此而生的.下面以一個簡單的例子來說明它的簡單用法.
基本需求
收集使用者的日本報名資訊
其中jlpt的日語等級分為n1,n2,n3,n4,n5;是以需要一個選擇器.
使用者需要手動輸入姓名,是以需要一個輸入框.
在project中建立一個app
檔案目錄結構如下所示
添加url規則
在jlpt目錄下建立一個urls.py檔案
如此一來,當使用者在浏覽器中輸入<code>http://yourdomain.com/jlpt</code>時,會導向到名叫home的view.下面我們來定義home這個view.
定義view
當使用者post表單時,利用post資料建立一個examinfoform,把form中的内容儲存成一個instance,然後将instance儲存到資料庫中.
當使用者get表單時,建立一個空的examinfoform.
examinfoform這個類就是我們接下來要建立的<code>modelform</code>
建立modelform類
在jlpt目錄下建立一個forms.py檔案
examinfoform繼承自modelform,建立了一個meta類,model的值為examinfo,這個examinfo就是一個model類.
定義model類
這樣隻需要定義一個model類,就可以依此建立一個新的form,當然form是可以定制的,比如選擇需要顯示的字段.
添加template檔案
views.home中的<code>return render(request, ‘jlpt/index.html‘, {‘form_info‘: form})</code>通過傳遞<code>form</code>(這個html檔案中為<code>form_info</code>)來渲染這個頁面.
添加背景管理
在jlpt目錄下建立一個admin.py檔案,代碼如下
通過http://www.yourdomain.com/admin登陸到背景管理系統時,可以看到資料分為<code>name</code>和<code>level</code>兩列.
安裝jlpt.
在project的settings.py檔案中,為installed_apps添加一個新的item.
完成,通路一下