在网站开发过程中,需要从前端向后端传入数据,由后端对数据进行操作,比如计算、存入数据库等。
从前端向后端传输数据,一般使用form表单。在Django中,有三种方法:
- 手写前端html代码,使用form表单:
<form action=’’method=’post’> </form>
- Django提供了form类,生成form表单。
- 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进行修改,实现表单的输入功能,并通过表单将数据传入后端,并插入数据库。