桓楠百科网

编程知识、经典语录与百科知识分享平台

Django开发网站-10-在Django中使用modelForm类生成表单

在网站开发过程中,需要从前端向后端传入数据,由后端对数据进行操作,比如计算、存入数据库等。

从前端向后端传输数据,一般使用form表单。在Django中,有三种方法:

  1. 手写前端html代码,使用form表单:
<form action=’’method=’post’> </form>
  1. Django提供了form类,生成form表单。
  2. Django提供了Modelform类,生成form表单。

Modelform做为Django中集成的组件,主要针对数据库中的某个表操作,通过models.py关联数据库。

本文着重讲modelform的使用,下面正式开始。

首先建立一个forms.py,用来写项目里的表单类。

首先引入几个类

from django import forms #引入forms表单类
from users.models import User #引入models里的User类
from django.core.exceptions import ValidationError #引入异常抛出类

创建User表单类,类继承了forms.ModelForm,password_confirm是密码确认,我们在进行注册的时候,往往会要求确认一次密码。

class Meta:是利用model创建表单的类。model=User,用来实例化models.py中的User类,fields是表单中的字段,也就是表单项目。widgets是一个字典,在这里定义password表单为密码输入格式。

class UserModelForm(forms.ModelForm):
    password_confirm=forms.CharField(label="确认密码",widget=forms.PasswordInput,min_length=6,max_length=20)
    class Meta:
        model=User
        fields=['username','password','password_confirm','gender','role']
        widgets={"password":forms.PasswordInput()}

下面在templates文件夹下建立一个user_add_form.html文件,用来展示表单。

在views.py中增加一个方法user_add_form()方法。该方法需要使用forms.py中的UserModelForm类和models中的User类,在头部引入这两个类,

from users.models import User   #引入models里的User类
from users.forms import UserModelForm #引入forms里的UserModelForm

增加一个user_add_form(request)方法,当前端的request是一个get方法时,实例化UserModelForm(),返回render方法,显示form表单,否则,将request.POST的数据传入UserModelForm类并实例化,

def user_add_form(request):
    if request.method=="GET":
        form=UserModelForm()
    return render(request,"user_add_form.html",{"form":form})

在urls.py中增加一个路由。

在user_add_form.html中写入{{form}},用来展示后端返回的form数据。

下面在浏览中测试一下。

输入127.0.0.1:8000/user_add_form/

右键检查页面源码,发现,字段及输入框已经在页面中。

本文结束。下一篇文章,将对user_add_form.html进行修改,实现表单的输入功能,并通过表单将数据传入后端,并插入数据库。

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言