1、接收参数
username=request.POST.get('username','')
phone=request.POST.get('phone','')
password=request.POST.get('password','')
2、校验参数
前端校验过的后端也要校验,后端的校验和前端的校验是⼀致的
- 判断参数是否⻬全
- 判断⽤户名是否是5-8位字符
- 判断密码是否是3-8位字符
- 判断⼿机号是否合法
#todo 校验参数(完整参数校验、格式校验)
#判断参数是否齐全
if not all([username,phone,password]):
raise Forbbiden('缺少必传参数')
#判断用户名是否是5-8个字符
if not re.match(r'^[a-zA-Z][a-zA-Z0-9_]{4,7}$',username):
raise Forbbiden('请输⼊5-8个字符的⽤户名')
#判断密码是否是3-8个字符
if not re.match(r'^[0-9a-zA-Z]{3,8}$',password):
raise Forbbiden('请输⼊3-8位的密码')
#判断手机号是否合法
if not re.match(r'^1[3589]\d{9}$',phone):
raise Forbbiden('请输⼊正确的⼿机号码')
特别注意1:这⾥校验的参数,前端已经校验过,如果此时参数还是出错,说明该请求是⾮正常渠道发送的,所以直接禁⽌本次请求。
3、保存注册数据
特别注意2:这⾥使⽤Django认证系统⽤户模型类提供的 create_user() ⽅法创建新的⽤户。
这⾥ create_user() ⽅法中封装了 set_password() ⽅法加密密码。
#todo 保存注册数据(入库操作)
try:
user=Users.objects.create_user(username=username,password=password,phone=phone)
except DatabaseError:
return render(request,'userapp/register.html',{'reg_error_msg':'注册失败'})
#todo 返回响应结果
return HttpResponse('进入项目首页')
如果注册失败,我们需要在⻚⾯上渲染出注册失败的提示信息。
<h5 class="title-login">⽤户注册
{% if register_error %}
<span class="error-tip">{{ register_error }}</span>
{% endif %}
</h5>
4、响应注册结果
见https://editor.csdn.net/md/?articleId=124331997
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123321.html