Django重新整理3
Forms组件
1.在models.py中我们建立一个新的表关系:
- class UserInfo(models.Model):
- user=models.CharField(max_length=32)
- pwd=models.CharField(max_length=32)
- email=models.CharField(max_length=32)
2.进行数据的迁移
3.路由和视图函数
4.
- from app01.models import UserInfo
- def reg(request):
- if request.method == "POST":
- form = UserForm(request.POST)
- #校验数据
- if form.is_valid():
- print(form.cleaned_data)
- UserInfo.objects.create(**form.cleaned_data)
- return HttpResponse("OK")
- else:
- errors=form.errors
- print(form.errors.get('__all__'))
- if form.errors.get("__all__"):
- g_errors = form.errors.get('__all__')[0]
- return render(request,"reg.html",locals())
- else:
- form=UserForm()
- return render(request,"reg.html",locals())
- #在views中直接创建UserForm表
- from django.forms import widgets
- class UserForm(forms.Form):
- msg={"required":"该字段不能为空"}
- user=forms.CharField(min_length=5,
- label="用户名",
- error_messages=msg,
- widget=widgets.TextInput(attrs={"class":"form-control"})
- )
- pwd=forms.CharField(error_messages=msg,
- label="密码",
- min_length=5,
- widget=widgets.PasswordInput(attrs={"class":"form-control"})
- )
- r_pwd = forms.CharField(error_messages=msg,
- min_length=5,
- label="确认密码",
- widget=widgets.PasswordInput(attrs={"class": "form-control"})
- )
- email=forms.EmailField(error_messages={"invalid":"邮箱格式错误"},
- label="邮箱",
- widget=widgets.EmailInput(attrs={"class":"form-control"})
- )
#定义钩子- def clean_user(self):
- val=self.cleaned_data.get("user")
- ret=UserInfo.objects.filter(user=val).first()
- if not ret:
- return val
- else:
- raise ValidationError("用户名已存在!")
- def clean_pwd(self):
- val=self.cleaned_data.get("pwd")
- if val.isdigit():
- raise ValidationError("密码不能是纯数字!")
- else:
- return val
- def clean(self):
- pwd=self.cleaned_data.get("pwd")
- r_pwd=self.cleaned_data.get("r_pwd")
- if pwd and r_pwd:
- if pwd==r_pwd:
- return self.cleaned_data
- else:
- raise ValidationError("两次密码不一致!")
- else:
- return self.cleaned_data
Django重新整理3的更多相关文章
- Django重新整理
1.母版的继承 #base<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset ...
- Django知识点整理
什么是web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. web应用 访 ...
- django笔记整理
Django复习: MTV模型: manager启动服务→urls找到路径→(找到views视图函数或者做路由分发)→视图函数处理相关逻辑,返回一个模板或者是字符串: ---------------- ...
- Django重新整理4---ModelForm-set(批量处理数据)
1. #引用modelformset from django.forms.models import modelformset_factory #必须继承forms.ModelForm! class ...
- Django重新整理2
Auth认证: 1.分配路由和创建视图函数 2.在视图函数中引用Django为我们提供的用户认证组建Auth 3.直接进行判断: def login(request): if request.meth ...
- Django ORM整理
字段类型 # 自增长 Auto = models.AutoField() BigAuto = models.BigAutoField() # 二进制 Binary = models.BinaryFie ...
- Django(一) 安装使用基础
大纲 安装Django 1.创建Django工程 2.创建Django app 3.写一个简单的登录注册相应页面 4.获取用户请求信息并处理 5.前后端交互 6.Django 请求 生命周期 跳转到 ...
- python学习博客地址集合。。。
python学习博客地址集合... 老师讲课博客目录 http://www.bootcdn.cn/bootstrap/ bootstrap cdn在线地址 http://www.cnblogs. ...
- 老男孩老师的博客地址 - 转自devops1992
害怕他那天不让人看了,所以我就复制一份到我自己的博客里. http://www.bootcdn.cn/bootstrap/ bootstrap cdn在线地址 http://www.cnblogs. ...
随机推荐
- java后台对json格式数据的解析
Json 和 Jsonlib 的使用 什么是 Json JSON(JvaScript Object Notation)(官网网站:http://www.json.org/)是 一种轻量级的数据交换格式 ...
- Netty学习大纲
1.BIO.NIO和AIO2.Netty 的各大组件3.Netty的线程模型4.TCP 粘包/拆包的原因及解决方法5.了解哪几种序列化协议?包括使用场景和如何去选择6.Netty的零拷贝实现7.Net ...
- linux虚拟机与windows主机传输文件方法
通过ssh 这种方法需要虚拟机内的linux安装ssh服务,默认是安装的。 首先检查ssh服务是开启的,通过shell下执行命令:service ssh status, 查看ssh服务是否已开启 ...
- iOS开发时间处理工具
1.获取当前的时间 /** 获取当前的时间 */ +(NSString*)getCurrentTimes{ NSDateFormatter *formatter = [[NSDateFormatter ...
- 转载 【Linux】Linux中常用操作命令
[Linux]Linux中常用操作命令 https://www.cnblogs.com/laov/p/3541414.html#vim Linux简介及Ubuntu安装 常见指令 系统管理 ...
- Python学习过程(一)
Hi,最近得知了有这么一种计算机语言,名字叫Python,下面对自己从零开始学习的一个记录.被大家所熟知的语言有很多种,比如说C语言 .java .C++ .C#等,以及javascri和火的一塌糊 ...
- Generic detail view PostDetailView must be called with either an object pk or a slug.解决
Django 使用DetailView有这个问题,url,和模板统一调用模型时,用pk,而不是id 如果不是用DetailView,只是简单的视图,则用pk 或者id都可以. urls.py: url ...
- 最短路【bzoj2464】: 中山市选[2009]小明的游戏
2464: 中山市选[2009]小明的游戏 Description 小明最近喜欢玩一个游戏.给定一个n * m的棋盘,上面有两种格子#和@.游戏的规则很简单:给定一个起始位置和一个目标位置,小明每一步 ...
- javascript拖拽事件
<!DOCTYPE html> <html> <head> <title></title> <style type="tex ...
- linux网络编程中的基本概念
int close(int fd)(假设是服务器端) close 关闭了自身数据传输的两个方向.close一个TCP套接字的默认行为是把该套接字标记成已关闭,然后立即返回到调用进程.该套接字描述符不能 ...