• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

python3 之 天天生鲜 项目(初学者)3

python 搞java代码 3年前 (2022-05-21) 13次浏览 已收录 0个评论

用户模块

实现:

  注册—-登录    功能     验证

这里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>)

后期要用它来 登录验证 

 

 

 

…..

 


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:python3 之 天天生鲜 项目(初学者)3

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址