Django具体操作(三)

理解表单类:上一篇中讲到了用户登录代码实现,用户登录框可以用HTML代码实现或者是表单实现。

在.个人的app下创建forms.py(这里很多人会写成from)

这个文件是专门存放各种与表单有关的类。

1class Foo(Form): #必须继承 2 username = xxx 3 password = xxx 4 email = xxx 5注意这里的字段必须和input的name字段一致 6 7from django.forms import Form 8from django.forms import fields 9from django.forms import widgets 10 11from django.shortcuts import render,redirect 12from app01 import models 13# Create your views here. 14from django.forms import Form 15from django.forms import fields 16from django.forms import widgets 17# 1、创建规则 18class TeacherForm(Form): #必须继承Form 19 # 创建字段,本质上是正则表达式 20 username = fields.CharField( 21 required=True, #必填字段 22 error_messages={"required":"用户名不能为空!!"}, #显示中文错误提示 23 widget=widgets.TextInput(attrs={"placeholder":"用户名","class":"form-control"}) #自动生成input框 24 ) 25 password = fields.CharField(required=True, error_messages={'required': '密码不能为空'}, 26 widget=widgets.TextInput(attrs={'placeholder': '密码', 'class': 'form-control'})) # 不能为空 27 email = fields.EmailField( 28 required=True, 29 error_messages={"required":"邮箱不能为空!!","invalid":"无效的邮箱"}, 30 widget=widgets.EmailInput(attrs={"placeholder": "邮箱", "class": "form-control"}) # 自动生成input框 31 ) #不能为空且邮箱格式要一致 32 33# 2、使用规则:将数据和规则进行匹配 34def teacherindex(request): 35 teacher_obj = models.UserInfo.objects.all() 36 # print(teacher_obj) 37 return render(request,"teacherindex.html",{"teacher_obj":teacher_obj}) 38def add(request): 39 if request.method=="GET": 40 form = TeacherForm() #只是让显示一个input框 41 return render(request,"add.html",{"form":form }) 42 else: 43 form = TeacherForm(data=request.POST) 44 # print(form) #<QuerySet [<UserInfo: UserInfo object>, <UserInfo: UserInfo object>, <UserInfo: UserInfo object>]> 45 if form.is_valid():# 开始验证 46 # print('执行成功',form.cleaned_data) # 所有匹配成功,字典 47 # {'username': 'asd', 'password': 'sdf', 'email': 'sadf@live.com','ut_id':1} 48 form.cleaned_data['ut_id'] = 1 #要分的清是班主任还是讲师 49 models.UserInfo.objects.all().create(**form.cleaned_data) 50 return redirect("/teacherindex/") 51 else: 52 # print("=====?",form.errors,type(form.errors))#返回失败的结果 53 # print(form.errors["username"][0]) #拿到返回失败的结果,渲染到页面 54 return render(request,"add.html",{"form":form})

或者是下面的方法:

1from django import forms 2 3class LoginForm(form.Form): # 记住格式 4 username = forms.CharField() 5 password = forms.CharField(widget=forms.PasswordInput) 6 7# 实例化看下效果 8login_form = LoginForm() 9print(login_form) 10 11 12<tr><th><label for='id_username'>Usernaem:</label></th><td> 13<input id='id_username' name='username' type='text' requuired/></td></tr>

值得注意的是form表单里面的类和前段页面的name是相同的,因为不需要看前段模板也可以生成HTML页面

上面这个实例化类里面没有传递任何数据,得到的是HTML代码,我们可以认为不管是前端的表单,还是后端的表单类,都是对象,这个对象的属性就是表单中的对话框(input)

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )