1. 前端部分(引入jquery与bootstrap)

<div class="container"><div class="col-md-8 col-md-offset-2">{% for item in form %}<div class="form-group"><lable>{{ item.label }}</lable>{{ item }}<span class="error pull-right"></span></div>{% endfor %}<input type="submit" class="btn btn-primary reg_btn" value="提交"></div></div><script>$('.reg_btn').click(function () {$.ajax({url:'',type:"post",dataType:"json",data:{user:$('#id_user').val(),pwd:$('#id_pwd').val(),r_pwd:$('#id_r_pwd').val(),email:$('#id_email').val(),csrfmiddlewaretoken:$("[name='csrfmiddlewaretoken']").val(),},success:function (res) {if(res.user){location.href='/login/'}else{$('.error').html('');$('.form-group').removeClass('has-error');//对相应信息遍历显示在页面
                 $.each(res.err,function (i,j){/**if(i=='__all__'){$('#id_r_p').next().html(j[0]).css('color','red').parent().addClass('has-error');}else{$('#id_'+i).next().html(j[0]).css('color','red').parent().addClass('has-error');}**///将错误信息显示在生成的span里
                     $('#id_'+i).next().html(j[0]).css('color','red').parent().addClass('has-error');});}}});});</script>

2. 后台python

2.1 对django组件中用户表字段的扩展

(1)在models中添加用户表新字段

from django.db import models
from django.contrib.auth.models import AbstractUser# Create your models here.
class user_info(AbstractUser):tel=models.CharField(max_length=32)

(2)在setting中更改用户认证组件的表配置信息

AUTH_USER_MODEL='app01.user_info'

修改之后需重新迁移数据库,如果无需添加新字段可省去上述步骤,直接使用django默认提供的auth_user表

2.2  业务代码

from django.http import JsonResponse
from django import forms
from app01.models import user_info
from django.core.exceptions import ValidationError
import re
from django.forms import widgets#注册视图函数
def register(request):if request.method=='GET':form=UserForm()return render(request,'register.html',locals())elif request.method=="POST":res={"user":None,'err':""}form=UserForm(request.POST)#验证用户信息if form.is_valid():res['user']=form.cleaned_data.get('user')user=form.cleaned_data.get('user')pwd=form.cleaned_data.get('pwd')email=form.cleaned_data.get('email')user_info.objects.create_user(username=user,password=pwd,email=email)else:res['err']=form.errorsreturn JsonResponse(res)#创建验证规则对象
class UserForm(forms.Form):user=forms.CharField(max_length=32,label='用户名')#widget = widgets.PasswordInput()前端密码密文显示pwd=forms.CharField(max_length=32,label='密码',widget=widgets.PasswordInput())r_pwd=forms.CharField(max_length=32,label='确认密码',widget=widgets.PasswordInput())email=forms.EmailField(max_length=32,label='邮箱')#使页面渲染时增加需要的属性def __init__(self,*args,**kwargs):super().__init__(*args,**kwargs)for filed in self.fields.values():filed.widget.attrs.update({'class':"form-control"})#设置钩子,对相应的验证框添加新的验证规则(不一定会被执行)def clean_user(self):val=self.cleaned_data.get('user')user=user_info.objects.filter(username=val).first()if user:raise ValidationError('用户已存在')else:return valdef clean_pwd(self):val = self.cleaned_data.get('pwd')if val.isdigit():raise ValidationError('密码不能为纯数字')else:return valdef clean_email(self):val=self.cleaned_data.get('email')if re.search('\w+@163.com$',val):return valelse:raise ValidationError('必须为163邮箱')# 全局钩子,此方法一定会被执行def clean(self):pwd=self.cleaned_data.get('pwd')r_pwd=self.cleaned_data.get('r_pwd')if pwd and r_pwd and pwd!=r_pwd:# raise ValidationError('密码不一致')self.add_error('r_pwd',ValidationError('两次密码不一致'))else:return self.cleaned_data

转载于:https://www.cnblogs.com/wangdamao/p/11564485.html

python用户注册(基于django)相关推荐

  1. Python毕业设计基于django的就业系统项目(含源码)

    目录 一.Python毕业设计基于django的就业系统项目(含源码) 二.基于django的就业系统项目文件说明 一.Python毕业设计基于django的就业系统项目(含源码) 源 码 免 费 下 ...

  2. Python毕业设计基于django的同城绘本馆系统-绘本图书商城(源码+系统+mysql数据库+Lw文档)

    文末获取资源,收藏关注不迷路 文章目录 一.项目介绍 二.主要使用技术 三.研究内容 四.核心代码 五.文章目录 一.项目介绍 本课题设计的目标是实现一个基于web的同城绘本馆.论文使用软件开发的顺序 ...

  3. python毕业设计 基于django框架企业公司网站系统毕业设计设计与实现

    开发环境 开发语言:python:Python版本:3.8.7 开发框架:Django:Django版本:4.x 数据库:mysql:数据库版本:mysql8 数据库管理工具:navicat10+ 开 ...

  4. python毕业设计 基于django框架个人博客系统毕业设计设计与实现

    开发环境 开发语言:python:Python版本:3.8.7 开发框架:Django:Django版本:4.x 数据库:mysql:数据库版本:mysql8 数据库管理工具:navicat10+ 开 ...

  5. python毕业设计基于django框架的个人博客系统的设计与实现 毕设参考

    开发概要 开发语言:python:Python版本:3.8.7 开发框架:Django:Django版本:4.x 数据库:mysql:数据库版本:mysql8 数据库管理工具:navicat10+ 开 ...

  6. python毕业设计 基于django框架新闻信息管理系统毕业设计设计与实现

    开发环境 开发语言:python:Python版本:3.8.7 开发框架:Django:Django版本:4.x 数据库:mysql:数据库版本:mysql8 数据库管理工具:navicat10+ 开 ...

  7. python毕业设计 基于django框架校园鲜花水果商城毕业设计设计与实现

    商城功能概要 首页.分类.商品详情页面,包含加入购物车.收藏商品.立即购买.用户登录.订单管理.地址管理:完整的购物流程,商品的加入.编辑.删除.批量选择,收货地址的选择,下单.会员中心(订单.收藏. ...

  8. python+vue基于django的在线考试系统

    本系统主要包括管理员,学生和教师三个角色组成:主要包括:首页,个人中心,学生管理,教师管理,课程分类管理,课程信息管理,在线考试管理,试题管理,习题管理,考试管理等功能的管理系统. 功能介绍 主要对首 ...

  9. 基于Django+Layui的组件化基础开发平台

    项目介绍 一款 Python 语言基于Django.Layui.MySQL等框架精心打造的一款模块化.高性能.企业级的敏捷开发框架,本着简化开发.提升开发效率的初衷触发,框架自研了一套个性化的组件,实 ...

  10. 在IIS上部署基于django WEB框架的python网站应用

    django是一款基于python语言的WEB开源框架,本文给出了如何将基于django写的python网站部署到window的IIS上. 笔者的运行环境: Window xp sp3 IIS 5.1 ...

最新文章

  1. 控制显示隐藏_大众发动机控制单元隐藏功能刷写
  2. mysql 变量null_如何检查变量是否为NULL,然后使用MySQL存储过程进行设置?
  3. JVM运行时数据区和各个区域的作用
  4. java出代码1601_LeetCode 1601. 最多可达成的换楼请求数目
  5. Windows单机配置Zookeeper环境
  6. 应用悄悄拿走你的隐私做了什么?只需30秒这个AI给你答案
  7. Linux在线下载安装MySQL8
  8. 数字信号处理(自学篇)
  9. android dropbox切换账户,在Android上自动同步Dropbox | MOS86
  10. POJ 1673 三角形垂心
  11. fast路由器服务器未响应,迅捷(FAST)无线路由器设置好了上不了网的解决方法
  12. PMP考试中常见的翻译问题
  13. 中国生物医药项目投资机会及运营前景策略研究报告2021-2027年
  14. NRF52832+DW1000通信系统架构设计
  15. 东北大学acm暑期夏令营第七天
  16. 服装检索相关论文阅读
  17. 支付宝APP支付 显示 系统繁忙 请稍后再试 ALI40247
  18. c/c++ 标准日期和时间戳互相转化
  19. php rot13解密,php对字符串执行ROT13编码的函数str_rot13()
  20. 【BZOJ】初级水题列表——献给那些想要进军BZOJ的OIers

热门文章

  1. BZOJ3808 : Neerc2012 Labyrinth of the Minotaur
  2. PI-安装SoapUI on Windows
  3. 前台获取后台数据写法%#%..
  4. FMS应用实例 - 从FMS服务器读取文件(图片/SWF/文本)到客户端
  5. 10本计算机视觉必读经典图书,入门篇 + 提升篇
  6. linux查找特定日期之后的文件,Linux Find命令查找指定时间范围内的文件的例子
  7. java变量只声明未初始化是否可以直接使用?
  8. java清除浏览器记录_Javascript脚本之清除浏览器历史数据
  9. 汉字在屏幕上的显示过程以及乱码的原因
  10. 装了mysql但是服务里没有反应_Mysql安装后在服务里找不到和服务启动不起来的解决方法...