用户模块
实现:
注册—-登录 功能 验证
这里views.py使用类方法
<span>from</span> django.conf.urls <span><a href="https://www.gaodaima.com/tag/import" title="查看更多关于import的文章" target="_blank">import</a></span><span> url </span><span>from</span> users <span>import</span><span> views urlpatterns </span>=<span> [ url(r</span><span>"</span><span>^<a href="https://www.gaodaima.com/tag/register" title="查看更多关于register的文章" target="_blank">register</a></span><span>"</span>, views.RigisterView.as_view(),name=<span>"</span><span>register</span><span>"</span><span>), ]</span>
www#gaodaima.com来源gaodaima#com搞(代@码网搞代码
<span>class</span><span> RigisterView(View): </span><span>def</span><span> get(self,request): </span><span>return</span> render(request,<span>"</span><span>register.html</span><span>"</span><span>) </span><span>def</span><span> post(self,request): </span><span>#</span><span> 获取注册信息</span> username = request.POST.get(<span>"</span><span>user_name</span><span>"</span><span>) password </span>= request.POST.get(<span>"</span><span>pwd</span><span>"</span><span>) cpassword </span>= request.POST.get(<span>"</span><span>cpwd</span><span>"</span><span>) email </span>= request.POST.get(<span>"</span><span>email</span><span>"</span><span>) allow </span>= request.POST.get(<span>"</span><span>allow</span><span>"</span><span>) </span><span>#</span><span> 数据处理 验证数据完整性</span> <span>if</span> <span>not</span><span> all([username, password, cpassword, email, allow]): </span><span>return</span> render(request, <span>"</span><span>register.html</span><span>"</span>, {<span>"</span><span>errmsg</span><span>"</span>: <span>"</span><span>数据不完整</span><span>"</span><span>}) </span><span>#</span><span> 验证密码是否一致</span> <span>if</span> password !=<span> cpassword: </span><span>return</span> render(request, <span>"</span><span>register.html</span><span>"</span>, {<span>"</span><span>errmsg</span><span>"</span>: <span>"</span><span>密码不一致</span><span>"</span><span>}) </span><span>#</span><span> 验证邮箱 # [w.-]+ 指一个或多个[w.-] 这样的字符,如 "aaa" "-ab" "c" "s._-l"</span> <span>if</span> <span>not</span> re.match(r<span>"</span><span>^[a-z0-9][w.-]*@[a-z0-9-]+(.[a-z]{2,5}){1,2}$</span><span>"</span><span>, email): </span><span>return</span> render(request, <span>"</span><span>register.html</span><span>"</span>, {<span>"</span><span>errmsg</span><span>"</span>: <span>"</span><span>邮箱格式不正确</span><span>"</span><span>}) </span><span>#</span><span> 验证是否勾选协议</span> <span>if</span> allow != <span>"</span><span>on</span><span>"</span><span>: </span><span>return</span> render(request, <span>"</span><span>register.html</span><span>"</span>, {<span>"</span><span>errmsg</span><span>"</span>: <span>"</span><span>请同意协议</span><span>"</span><span>}) </span><span>#</span><span> 验证用户名是否存在(这里使用不重复户用名)</span> <span>try</span><span>: user </span>= User.objects.get(username=<span>username) </span><span>except</span><span> User.DoesNotExist: user </span>= None <span>#</span><span> 如果不存在 赋值为空</span> <span>if</span> user: <span>#</span><span> 如果存在</span> <span>return</span> render(request, <span>"</span><span>register.html</span><span>"</span>, {<span>"</span><span>errmsg</span><span>"</span>: <span>"</span><span>用名已存在</span><span>"</span><span>}) </span><span>#</span><span> 保存到数据库 mysql</span> user =<span> User.objects.create_user(username, email, password) user.is_active </span>= False <span>#</span><span> 0 也可以 邮箱未验证设置为0</span> <span> user.save() </span><span>#</span><span> 邮箱激活</span> <span>#</span><span> 获取token</span> token =<span> user.gennerate_activeate_token() </span><span>#</span><span> 发送邮件</span> <span> celery_send_email.delay(email,token) </span><span>return</span> render(request, <span>"</span><span>login.html</span><span>"</span>)
注册 ——— 功能 mysql…….celery…..redis……..
这里使用 异步邮箱验证(celery) 前面有讲到 异步实现的方法
代理redis 库4的信息
填写注册信息
mysql查看注册信息
收到激活链接
接下来就是要实现邮箱验证 active
<span>from</span> django.conf.urls <span>import</span><span> url </span><span>from</span> users <span>import</span><span> views urlpatterns </span>=<span> [ url(r</span><span>"</span><span>^activate(?P<token>.+)/</span><span>"</span>, views.activate,name=<span>"</span><span>activate</span><span>"</span><span>), ]</span>
<span>from itsdangerous import TimedJSONWebSignatureSerializer as Serializer<br><br>def</span><span> activate(request,token): serializer </span>= Serializer(settings.SECRET_KEY,3600<span>) # 设置3600秒过期 </span><span>try</span><span>: json_str </span>=<span> serializer.loads(token) </span><span>except</span><span>: </span><span>return</span> HttpResponse(<span>"</span><span>连接已过期</span><span>"</span><span>) user_id </span>= json_str[<span>"</span><span>confirm</span><span>"</span><span>]</span><span>try</span><span>: user </span>= User.objects.get(id=<span>user_id) </span><span>except</span><span> User.DoesNotExist: </span><span>return</span> HttpResponse(<span>"</span><span>账号存在异常</span><span>"</span><span>) </span><span>#</span><span>邮箱验证通过 修改</span> user.is_active =<span> True user.save() </span><span>return</span> render(request,<span>"</span><span>login.html</span><span>"</span>)
后期要用它来 登录验证
…..