ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【Python-Django后端】用户注册通用逻辑,用户名、手机号重名检测,注册成功后状态保持!!!

2019-07-28 13:52:12  阅读:146  来源: 互联网

标签:username return 用户注册 Python request Django mobile http password


用户注册后端逻辑

1. 接收参数

username = request.POST.get('username')
password = request.POST.get('password')
password2 = request.POST.get('password2')
mobile = request.POST.get('mobile')
allow = request.POST.get('allow')

 

2. 校验参数

from django import http
import re

# 判断参数是否齐全
if not all([username, password, password2, mobile, allow]):
    return http.HttpResponseBadRequest('缺少必传参数')
# 判断用户名是否是5-20个字符
if not re.match(r'^[a-zA-Z0-9_]{5,20}$', username):
    return http.HttpResponseBadRequest('请输入5-20个字符的用户名')
# 判断密码是否是8-20个数字
if not re.match(r'^[0-9A-Za-z]{8,20}$', password):
    return http.HttpResponseBadRequest('请输入8-20位的密码')
# 判断两次密码是否一致
if password != password2:
    return http.HttpResponseBadRequest('两次输入的密码不一致')
# 判断手机号是否合法
if not re.match(r'^1[3-9]\d{9}$', mobile):
    return http.HttpResponseBadRequest('请输入正确的手机号码')
# 判断是否勾选用户协议
if allow != 'on':
    return http.HttpResponseBadRequest('请勾选用户协议')

 这里校验的参数,前端已经校验过,如果此时参数还是出错,说明该请求是非正常渠道发送的,所以直接禁止掉。

3. 保存注册数据

from django.db import DatabaseError

# 保存注册数据
try:
    User.objects.create_user(username=username, password=password, mobile=mobile)
except DatabaseError:
    return render(request, 'register.html', {'register_errmsg': '注册失败'})

# 响应注册结果
return http.HttpResponse('注册成功,重定向到首页')

  

示例:重定向

from django.shortcuts import redirect
from django.urls import reverse

# 响应注册结果
return redirect(reverse('contents:index'))

  

状态保持

1. login()方法介绍

  1. 状态保持:
    • 将通过认证的用户的唯一标识信息(比如:用户ID)写入到当前session会话中
  2. login()方法:
    • Django用户认证系统提供了 login() 方法
    • 封装了写入session的操作,帮助我们快速实现状态保持
  3. login()位置:

    • django.contrib.auth.__init__.py文件中

      login(request, user)

2. login()方法使用

# 保存注册数据
try:
    user = User.objects.create_user(username=username, password=password, mobile=mobile)
except DatabaseError:
    return render(request, 'register.html', {'register_errmsg': '注册失败'})

# 实现状态保持
login(request, user)

# 响应注册结果
return redirect(reverse('contents:index'))

  

 

用户名或手机号重复注册逻辑:

1.请求方式

选项方案
请求方法 GET
请求地址 /usernames/(?P<username>[a-zA-Z0-9_]{5,20})/count/


 

 

 

 

 


标签:username,return,用户注册,Python,request,Django,mobile,http,password
来源: https://www.cnblogs.com/LiuXinyu12378/p/11258741.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有