AI智能
改变未来

Django中的forms表单


from表单的主要职责-

  • 生成表单页面
  • 页面提交的数据进行后端的校验

如何加入forms表单

  1. 在某个应用下新建一个forms.py文件,用来存放forms表单
  2. 导入forms
    from django import forms
  3. 编写一个类,继承forms.Form
class ResoourceForm(forms.Form):resource_name = forms.CharField(max_length=100, min_length=2, label=\"资源名\")keywords = forms.CharField(max_length=200,min_length=2, label=\"关键字\")resource = forms.FileField(label=\"上传资源\")

生成表单页面

form = ResourceForm()table = form.as_table()p = form.as_p()ul = form.as_ul()return render(request, \'xxx.html\', {\"form\": table/p/ul})

代码示例:

from django import formsfrom resource.models import *def upload2(request):if request.method == \"GET\":form = ResourceForm()table = form.as_table()return render(request, \"res/up2.html\", {\"table\":table})# 接收页面参数form = ResourceForm(data=request.POST, files=request.FILES)# 对页面参数进行校验if form.is_valid():# 获取校验后的参数,返回的是一个字典格式的数据,cleaned_data只能在is_valid之后才能使用param = form.cleaned_data  # 类似param = request.POST.dict()return redirect(to=\'/\')# 获取失败的信息errors = form.errorsreturn render(request, \"res/up2.html\", errors)

ModelForm 的使用

ModelForm的主要职责

  • 生成表单页面
  • 完成数据校验和存储
  • 完成数据校验和更新

ModelForm 表单的定义

class ResourceModelForm(forms.ModelForm):class Meta:# 通过model指定表单和模型的对应关系model = Resource# fields用来设置表单中拥有模型中的哪些属性# 表达方式有两种:1、列表 2、\"__all__\"表示所有属性

ModelForm 实现数据的校验和存储

form = ResourceModelForm(data=request.POST, files=request.FILES)if form.is_valid():# 获取校验数据# form.cleaned_data# 获取模型对象model = form.instance# ...后续操作# 保存数据form.save()

ModelForm 实现数据的校验和修改

# 修改数据必须传instance参数resource = Resource.objects.get(pk=pk)form = ResourceModelForm(data=request.POST, files=request.FILES, instance=resource)# 剩余代码和存储一致
赞(0) 打赏
未经允许不得转载:爱站程序员基地 » Django中的forms表单