【Django 天天生鲜项目02】注册、登录、用户中心 (itsdangerous模块加密、celery异步、 Django 的验证系统、redis作为缓存等)

关键:类视图的使用、用itsdangerous模块加密身份信息、使用celery异步发送邮件、使用 Django 的验证系统、redis作为缓存和session存储后端、login_required 装饰器LoginRequired Mixin类的使用、redis存储浏览记录的流程...

仅用作个人笔记!

目录

1.注册

2.激活账户

2.1.生成激活用户的token用以发邮件

2.3.使用selery异步发送邮件

3.登录

4.用户中心

 login_required 装饰器

LoginRequired Mixin类的使用


 

1.注册

总体上,注册要做的就是:

  • 验证注册信息合法性;
  • 处理注册信息,保存用户到数据库
  • 发送激活邮件,点击激活链接激活

 

(1)在templats目录下创建 register.html ,使用表单来提交注册信息;

(2)在 user/views.py 写一个视图 register 用来显示注册页面;

(3)在应用的urls中配置路径,为了反向解析,注意写上name:

(4)注意html文件中的静态文件路径,为了动态的生成路径,使用{%  load static %}导入静态资源;

(5)视图register_handle处理提交过来的注册信息,进行注册处理

使用all方法进行数据校验:python all() 函数用于判断给定的可迭代参数 iterable 中的所有元素是否都为 TRUE,如果是返回 True,否则返回 False。元素除了是 0、空、None、False 外都算 True。

if not all([username, password, email]):
        # 若数据不完整
        return render(request, 'register.html', {'errmsg': '数据不完整'})

使用正则匹配校验邮箱

import re
...    
    # 校验邮箱
    if not re.match(r'^[a-z0-9][\w.\-]*@[a-z0-9\-]+(\.[a-z]{2,5}){1,2}$', email):
        return render(request, 'register.html', {'errmsg': '邮箱格式不正确'})

用户注册前先校验用户名是否重复:

from user.models import User
...
# 校验用户名是否重复
    try:
        user = User.objects.get(username=username)
    except User.DoesNotExist:
        # 用户名不存在
        user = None

    if user:
        # 用户名已存在
        return render(request, 'register.html', {'errmsg': '用户名已存在'})

用户注册:

    # 进行业务处理: 使用Django认证系统 进行用户注册
    user = User.objects.create_user(username, email, password)
    user.is_active = 0  # 默认还没激活
    user.save()

注册后返回应答,跳转首页(下面反向解析函数 reverse:goods应用下,name=index的视图)

    return redirect(reverse('goods:index'))

(6)两个视图使用同一个url

上面视图register_handle视图register 使用的是两个地址,完全没有必要(登录页和登录处理同理)。

方法:

先在html表单提交时,form 的 action="页面自身" ;

在视图register 中,通过请求方式来判断:if request.method == 'GET'显示注册页面,否则就是注册数据处理。

 

 

基于类的视图 使用Python 对象实现视图,提供了除函数视图之外的另一种方式。它们不能替代基于函数的视图,但与基于函数的视图相比,它们是有某些不同和优势的。

基于类的视图: 概览 | 内置显示视图 | 内置编辑视图 | 使用混入 | API 参考 | 扁平化索引

 

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值