天天看点

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简单用法