天天看點

Django的ModelForm簡單用法

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.

完成,通路一下

Django的ModelForm簡單用法