Django天天生鲜项目

一.项目的整体架构

二.用户模块

用户注册思路总结:

  1. 获取用户输入的信息(username,password,email)
  2. 校验数据(数据的完整性,emai邮箱格式是否正确)
  3. 查看数据库中是否已经存在用户输入的用户名,用get函数。
        try:
            user = User.objects.get(username=username)
        except User.DoesNotExist:
            # 用户名不存在
            user = None  # 重点在这里:小技巧
        if user:
            # 用户名已存在
            return render(request, 'register.html', {'errmsg': '用户名已存在'})
  1. 将用户信息插入到数据库。用create_user函数。
    • create_user函数的参数:username、password、email
    • 认证系统默认的参数:is_active=True、is_staff=False、is_superuser=False
    • 该函数将password用hash算法加密后存储到数据库中
  2. 将is_active的值设置为0,保存。为了用邮箱激活。
  3. 准备发送邮件的参数,用celery发送邮件。
    • 先给用户的id进行加密,先导包from itsdangerous import TimedJSONWebSignatureSerializer as Serializer
        # 参数1:随便给一个字符串用来加密;参数2: 加解密的过期时间
        serializer = Serializer(settings.SECRET_KEY,30)    
        # 将用户id加密,返回一个bytes类型,需要转换为字符串类型
        token = serializer.dumps(user.id).decode()  
    
    • 在settings中配置celery的相关信息。
    • 然后自定义一个celery任务函数,调用django中的send_email()函数。
    • 最后用delay函数发送任务函数。
  4. 将注册信息保存到session中。
    • 用django.contrib.auth包中的login方法,login有两个参数,request和user,user来自authenticate方法。
    • 用login之前必须使用authenticate方法验证数据库中是否有用户信息。否则会抛出异常。
  5. 重定向到首页

用户登录思路总结:

  1. 获取用户输入的数据:username,password,allow
  2. 校验数据
  3. 查看数据库中是否包含账号和密码。user = authenticate(username=username,password=password)
  4. 判断user是否为空,和账号是否激活。
  5. user不为空,账号被激活:
    • login(request,user)方法将用户信息存储到session中。
    • 判断allow记住用户名是否为on,是:将username放到cookie中;否:将cookie中的username删除。
    • 跳转到首页
    • 设置index.html的导航栏。user.is_authenticated判断用户是否登入,user.username取出用户名。
  6. 否则,返回错误信息。

显示登录页面思路总结:

  1. 判断cookie中是否含有username。
  2. 含有:返回username,将checked的值设置为checked并返回。
  3. 没有:username和checked全部返回为空。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • hello world This is a test this is a tset 这是 H1 这是 H2 这是...
    6d4554fcac71阅读 145评论 0 0
  • 忽然念及四月 几度风吹树 吹落庭前 一枝暖 忽然念及海棠 这简单而平凡的处事方式 自己绽放了 另一朵 才不会孤单
    小麦iii阅读 346评论 2 15
  • “小虹,海兰呢?”邓队长与小李快步走出三里屯的村寨大门,直奔科帕奇警车。 “海兰先回去了,坐沈林的车……”小虹远远...
    寻舟的那些事儿阅读 233评论 0 3
  • 轻轻的你走了, 正如你轻轻的来; 来不及招手, 来不及拥抱。 …… 悄悄的你走了, 正如你悄悄的来; 留下了遗憾,...
    小雨滴HY阅读 248评论 2 4