一.展示用户注册页面
首先在工程中新建user子应用,并在项目开发配置文件中注册user子应用。
在user子应用中的views文件中新建用户注册视图类,在get方法中返回注册的register.html文件,并在总路由中定义路由并定义命名空间,然后在user子应用中新建urls文件,用来存储子路由,并将register路由定义在子路由中,定义一个命名。
二.用户模型类
Django中自带有用户认证系统,认证系统中有默认的用户模型类User,但是Django中默认的用户模型类User中缺少项目所需要的mobile手机号字段。所以需要自定义用户模型类,继承自Django的默认用户模型类,并新增手机号mobile字段。自定义用户模型类之后,还要在项目配置文件中使用AUTH_USER_MODEL 属性告知Django使用我们所定义的用户模型类。然后在终端中使用命令生成迁移文件,然后执行迁移文件。
三.用户注册逻辑实现
用户注册时提交数据使用 但是POST方法,所以我们要在views中写一个post方法。
在post方法中首先接收前端传来的参数(username,password,password2,mobile,allow),接受参数之后,我们还要对参数进行校验,校验参数是否齐全,参数是否合法,以防有人跳过前端向服务器发送请求。如果不合法我们就使用HttpResponseForbidden(),终止这次请求。校验过参数后,我们要将用户传过来的信息保存进数据库中,这时我们使用Django自带的create_user()方法,因为create_user()方法中封装有set_password()方法,set_pasword()方法是用来给密码进行加密处理的。
保存时,因为是数据库操作,所以为防止操作数据库时出错,这里要try一下,如果没有出错,就代表注册成功了,重定向到首页,如果出现错误了,我们就返回注册页面并携带错误信息。
因为我们需要重定向到首页,所以我们要有首页。新建一个contents首页子应用,然后在首页自应用中的views里,新建首页视图,然后在get方法中返回首页页面。并在总路由和子路由中定义路由,命名空间和命名。这时注册成功后就可以成功重定向到首页了。
用户注册成功重定向到首页,此时就代表用户已经登录成功。用户登录成功,就表示我们要实现状态保持,也就是将用户ID保存到浏览器的cookie,和服务器的session中,服务器的session我们选择redis的2号库作为session。Django提供了login()方法,可以帮助我们快速写入session,实现用户登录。
用户注册时,我们还需要判断一下用户名和手机号是否重复注册。
用户在写入用户名和手机号时,前端都会向我们发送一个ajax的GET请求。所以我们要新建两个视图类分别用来检测用户名是否重复和手机号是否重复,新建视图后要在子路由中定义路由。前端在发请求时会将用户写入的用户名或手机号作为路径参数传过来,我们在接受参数后,在数据库中进行条件查询,查询username或者mobile等于前端传过来的用户名或手机号的记录有几条,然后把记录数方法json字符串中传给前端,前端会判断是否有重复。
黑马Python教程实战项目--美多商城(二)
最新推荐文章于 2022-11-23 11:21:15 发布