一、定义的规则

class TeacherForm(Form):  #必须继承Form# 创建字段,本质上是正则表达式username = fields.CharField(required=True,     #必填字段error_messages={"required":"用户名不能为空!!"},  #显示中文错误提示widget=widgets.TextInput(attrs={"placeholder":"用户名","class":"form-control"}),  #自动生成input框label="姓名",label_suffix=":")password = fields.CharField(required=True, error_messages={'required': '密码不能为空'},widget=widgets.PasswordInput(attrs={'placeholder': '密码', 'class': 'form-control'}),label="密码",label_suffix=":")  # 不能为空email = fields.EmailField(required=True,error_messages={"required":"邮箱不能为空!!","invalid":"无效的邮箱"},widget=widgets.EmailInput(attrs={"placeholder": "邮箱", "class": "form-control"}),  # 自动生成input框label = "邮箱",label_suffix = ":") #不能为空且邮箱格式要一致

页面上渲染

用第二种方式需要加上下面的这个:

二、下拉框的规则

三、判断用户民是不存在,存在就不添加了

需要导入:

from django.core.exceptions import ValidationError

四、initial  修改时用到

五、自定义配置

1、在settings中:

2、导入settings

from django.conf import settings

3、使用

六、多对多修改两种方式(用Form)

def editteacher(request,nid):obj = models.UserInfo.objects.filter(id=nid, ut_id=1).first()# print(obj.username)if not obj:return redirect("/teacherindex/")if request.method=="GET":print([obj.id for obj in obj.teacher_classes.all()])  #[2]  拿到select框的id是为了要做默认显示的form = TeacherForm(initial={"username":obj.username,"password":obj.password,"email":obj.email,"teacher_classes":[obj.id for obj in obj.teacher_classes.all()]}) #就让显示一个input框,并且带有原来哪一行的内容return render(request, "editteacher.html", {"form":form})else:form = TeacherForm(data=request.POST)if form.is_valid():#开始校验,注意这要加括号cls_list = form.cleaned_data.pop("teacher_classes")print(cls_list)models.UserInfo.objects.filter(id=nid).update(**form.cleaned_data)obj.teacher_classes.set(cls_list)   #更新第三张表return redirect("/teacherindex/")else:return render(request, "editteacher.html", {"form":form})

七、多对多添加(用Form)

def addteacher(request):if request.method=="GET":form = TeacherForm()  #只是让显示一个input框return render(request, "addteacher.html", {"form":form})else:form = TeacherForm(data=request.POST)# print(form)  #<QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>]>if form.is_valid():# 开始验证# print('执行成功',form.cleaned_data)          # 所有匹配成功,字典# # {'username': 'ghf', 'password': '435', 'email': 'fddfg@qq.com', 'teacher_classes': ['4']}cls_list = form.cleaned_data.pop("teacher_classes")print("============id",cls_list)form.cleaned_data['ut_id'] = 1#创建新老师的对象teacher_obj = models.UserInfo.objects.create(**form.cleaned_data)#创建新老师和班级的关系teacher_obj.teacher_classes.add(*cls_list)  #以前添加的是对象,现在也可以吧id添加进去return redirect("/teacherindex/")else:# print("=====?",form.errors,type(form.errors))#返回失败的结果# print(form.errors["username"][0])   #拿到返回失败的结果,渲染到页面return render(request, "addteacher.html", {"form":form})

转载于:https://www.cnblogs.com/morgana/p/8492972.html

Django之Form组件补充相关推荐

  1. Django之Form组件介绍

    --------------------------------------前言------------------------------------ 在进入正题之前,想多说两句; 当我们开始学习一 ...

  2. 转载:Django之Form组件

    Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 小试牛刀 1.创建Form类 + View C ...

  3. Django的form组件提交时错误不显示或无法提交

    出现的问题:在学习django的form组件时,对不符合form组件定义的字段无法提交,进而导致无法显示出自定义的错误信息.(因为无法提交就代表着数据没有传给后台,然后你的错误回显是在后台对数据的检验 ...

  4. Django中Form组件的使用

    Form介绍 HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否输入,输入 ...

  5. Django之Form组件

    一.Form组件介绍 1.Form组件可以做的几件事情 1.用户请求数据验证 2.自动生成错误信息 3.打包用户提交的正确信息 4.如果其中有一个错误了,其他的正确这,保留上次输入的内容 5.自动创建 ...

  6. Django框架-Form组件

    一.DjangoForm组件介绍 我们之前在html页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校 ...

  7. Django之form组件!

     一.手动实现注册功能 注册功能1.渲染前端标签获取用户输入 >>> 渲染标签2.获取用户输入传递到后端校验 >>> 校验数据3.校验未通过展示错误信息 >& ...

  8. Django之form组件加cookie,session

    ---恢复内容开始--- 多对表的三种创建 一全自动(推荐使用) 优点:不需要手动创建第三张表也就是我们之前一直用的,靠那个不会在数据库中显示的虚拟字段,告诉orm帮我们创建能够表示多对多关系的第三张 ...

  9. django.forms生成HTML,第21天,Django之Form组件

    ModelForm 一.Form组件初识 Django的Form主要具有一下几大功能: 生成HTML标签 验证用户数据(显示错误信息) HTML Form提交保留上次提交数据 初始化页面显示内容 mo ...

  10. 小白IT:Django框架—form组件和ModelForm

    文章目录 一.form简介 1.form组件的功能 2.form组件的简单使用 数据库模型准备 form简单使用 在视图函数中写注册函数 模板文件login.html文件 二.Form中常用字段约束与 ...

最新文章

  1. LabVIEW图像灰度测量(基础篇—7)
  2. 对软件工程与计算机科学之间区别的看法
  3. 深入理解Java泛型
  4. RabbitMQ安装---rpm安装
  5. Don’t Worry.Be Scruffy.
  6. 【文智背后的奥秘】系列篇——分布式爬虫之WebKit
  7. TensorFlow模型保存和提取方法(含滑动平均模型)
  8. 大风车音乐计算机,大风车歌曲
  9. data为什么是一个函数
  10. 网络空间搜索FOFA
  11. 甘特图控件VARCHART XGantt的功能亮点
  12. 写给不会爱自己的人,我自己
  13. 漫漫人生路,悠悠岁月深。最快的脚步不是跨越,而是继续;
  14. 西门子s7-100模拟器仿真软件下载
  15. Python输入一个年份,判断是否为闰年
  16. 2022出海南亚:巴基斯坦电商市场现状及发展前景
  17. R语言计量:Newey-West调整
  18. Docker之快速搞定容器数据卷
  19. 【蓝桥杯】单片机学习(9)——多.c文件初认识及计算器实例
  20. 2018年华科考研复试机试题记录

热门文章

  1. 为什么说LinkedHashMap是Java中最大的数据结构? 了解一下?
  2. 从滴滴亏109亿说起
  3. Red Hat 发布新 logo:“没有脸了”
  4. 你没听过的IT技术解读,能秒懂的都是老司机...
  5. 流水线机制、滑动窗口协议、GBN、SR
  6. JavaScript:jklyDB
  7. mysql cluster推荐配置
  8. setCompoundDrawables和setCompoundDrawablesWithIntrinsicBounds区别
  9. 使用POI完成 EXCEL的 导出和导入
  10. http://blog.csdn.net/zbyufei/article/details/6096881