Forms组件

1.在models.py中我们建立一个新的表关系:

  1. class UserInfo(models.Model):
  2.  
  3. user=models.CharField(max_length=32)
  4. pwd=models.CharField(max_length=32)
  5. email=models.CharField(max_length=32)

2.进行数据的迁移

3.路由和视图函数

4.

  1. from app01.models import UserInfo
  2. def reg(request):
  3. if request.method == "POST":
  4. form = UserForm(request.POST)
  5. #校验数据
  6. if form.is_valid():
  7. print(form.cleaned_data)
  8. UserInfo.objects.create(**form.cleaned_data)
  9. return HttpResponse("OK")
  10. else:
  11. errors=form.errors
  12. print(form.errors.get('__all__'))
  13. if form.errors.get("__all__"):
  14. g_errors = form.errors.get('__all__')[0]
  15. return render(request,"reg.html",locals())
  16.  
  17. else:
  18. form=UserForm()
  19. return render(request,"reg.html",locals())
  20.  
  21. #在views中直接创建UserForm表
  22. from django.forms import widgets
  23.  
  24. class UserForm(forms.Form):
  25. msg={"required":"该字段不能为空"}
  26. user=forms.CharField(min_length=5,
  27. label="用户名",
  28. error_messages=msg,
  29. widget=widgets.TextInput(attrs={"class":"form-control"})
  30. )
  31. pwd=forms.CharField(error_messages=msg,
  32. label="密码",
  33. min_length=5,
  34. widget=widgets.PasswordInput(attrs={"class":"form-control"})
  35. )
  36. r_pwd = forms.CharField(error_messages=msg,
  37. min_length=5,
  38. label="确认密码",
  39. widget=widgets.PasswordInput(attrs={"class": "form-control"})
  40. )
  41. email=forms.EmailField(error_messages={"invalid":"邮箱格式错误"},
  42. label="邮箱",
  43. widget=widgets.EmailInput(attrs={"class":"form-control"})
  44. )

  45. #定义钩子
  46. def clean_user(self):
  47. val=self.cleaned_data.get("user")
  48. ret=UserInfo.objects.filter(user=val).first()
  49. if not ret:
  50. return val
  51. else:
  52. raise ValidationError("用户名已存在!")
  53.  
  54. def clean_pwd(self):
  55. val=self.cleaned_data.get("pwd")
  56. if val.isdigit():
  57. raise ValidationError("密码不能是纯数字!")
  58. else:
  59. return val

  60. def clean(self):
  61. pwd=self.cleaned_data.get("pwd")
  62. r_pwd=self.cleaned_data.get("r_pwd")
  63.  
  64. if pwd and r_pwd:
  65. if pwd==r_pwd:
  66. return self.cleaned_data
  67. else:
  68. raise ValidationError("两次密码不一致!")
  69. else:
  70. return self.cleaned_data

Django重新整理3的更多相关文章

  1. Django重新整理

    1.母版的继承 #base<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset ...

  2. Django知识点整理

    什么是web框架 框架,即framework,特指为解决一个开放性问题而设计的具有一定约束性的支撑结构,使用框架可以帮你快速开发特定的系统,简单地说,就是你用别人搭建好的舞台来做表演. web应用 访 ...

  3. django笔记整理

    Django复习: MTV模型: manager启动服务→urls找到路径→(找到views视图函数或者做路由分发)→视图函数处理相关逻辑,返回一个模板或者是字符串: ---------------- ...

  4. Django重新整理4---ModelForm-set(批量处理数据)

    1. #引用modelformset from django.forms.models import modelformset_factory #必须继承forms.ModelForm! class ...

  5. Django重新整理2

    Auth认证: 1.分配路由和创建视图函数 2.在视图函数中引用Django为我们提供的用户认证组建Auth 3.直接进行判断: def login(request): if request.meth ...

  6. Django ORM整理

    字段类型 # 自增长 Auto = models.AutoField() BigAuto = models.BigAutoField() # 二进制 Binary = models.BinaryFie ...

  7. Django(一) 安装使用基础

    大纲 安装Django 1.创建Django工程 2.创建Django app 3.写一个简单的登录注册相应页面 4.获取用户请求信息并处理 5.前后端交互 6.Django 请求 生命周期  跳转到 ...

  8. python学习博客地址集合。。。

    python学习博客地址集合...   老师讲课博客目录 http://www.bootcdn.cn/bootstrap/  bootstrap cdn在线地址 http://www.cnblogs. ...

  9. 老男孩老师的博客地址 - 转自devops1992

    害怕他那天不让人看了,所以我就复制一份到我自己的博客里. http://www.bootcdn.cn/bootstrap/  bootstrap cdn在线地址 http://www.cnblogs. ...

随机推荐

  1. java后台对json格式数据的解析

    Json 和 Jsonlib 的使用 什么是 Json JSON(JvaScript Object Notation)(官网网站:http://www.json.org/)是 一种轻量级的数据交换格式 ...

  2. Netty学习大纲

    1.BIO.NIO和AIO2.Netty 的各大组件3.Netty的线程模型4.TCP 粘包/拆包的原因及解决方法5.了解哪几种序列化协议?包括使用场景和如何去选择6.Netty的零拷贝实现7.Net ...

  3. linux虚拟机与windows主机传输文件方法

    通过ssh    这种方法需要虚拟机内的linux安装ssh服务,默认是安装的。 首先检查ssh服务是开启的,通过shell下执行命令:service ssh status, 查看ssh服务是否已开启 ...

  4. iOS开发时间处理工具

    1.获取当前的时间 /** 获取当前的时间 */ +(NSString*)getCurrentTimes{ NSDateFormatter *formatter = [[NSDateFormatter ...

  5. 转载 【Linux】Linux中常用操作命令

    [Linux]Linux中常用操作命令     https://www.cnblogs.com/laov/p/3541414.html#vim   Linux简介及Ubuntu安装 常见指令 系统管理 ...

  6. Python学习过程(一)

    Hi,最近得知了有这么一种计算机语言,名字叫Python,下面对自己从零开始学习的一个记录.被大家所熟知的语言有很多种,比如说C语言 .java .C++  .C#等,以及javascri和火的一塌糊 ...

  7. 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 ...

  8. 最短路【bzoj2464】: 中山市选[2009]小明的游戏

    2464: 中山市选[2009]小明的游戏 Description 小明最近喜欢玩一个游戏.给定一个n * m的棋盘,上面有两种格子#和@.游戏的规则很简单:给定一个起始位置和一个目标位置,小明每一步 ...

  9. javascript拖拽事件

    <!DOCTYPE html> <html> <head> <title></title> <style type="tex ...

  10. linux网络编程中的基本概念

    int close(int fd)(假设是服务器端) close 关闭了自身数据传输的两个方向.close一个TCP套接字的默认行为是把该套接字标记成已关闭,然后立即返回到调用进程.该套接字描述符不能 ...