开源web框架django知识总结(十二)

开源web框架django知识总结(十二)

户中心界面 (一)

定义模型类基类

为了给项目中模型类补充数据创建时间更新时间两个字段,我们需要定义模型类基类。 新建aerf_mall.utils/BaseModel.py文件,创建模型类基类。

Django模型中

auto_now_add=True时为添加时的时间,更新对象时不会有变动。

auto_now=True无论是你添加还是修改对象,时间为你添加或者修改的时间。

from django.db import models
 
class BaseModel(models.Model):
    """为模型类补充字段"""
 
    create_time = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
    update_time = models.DateTimeField(auto_now=True, verbose_name="更新时间")
 
    class Meta:
        abstract = True  # 说明是抽象模型类, 用于继承使用,数据库迁移时不会创建BaseModel的表

1、判断用户是否登录

需求:

  • 当用户登录后,才能访问用户中心。
  • 如果用户未登录,就不允许访问用户中心,将用户引导到登录界面。

实现方案:

  • 需要判断用户是否登录。
  • 根据是否登录的结果,决定用户是否可以访问用户中心。

2. is_authenticated 判断用户是否登录

介绍:

  • Django用户认证系统提供了方法request.user.is_authenticated()来判断用户是否登录。
  • 如果通过登录验证则返回True。反之,返回False
  • 缺点:登录验证逻辑很多地方都需要,所以该代码需要重复编码好多次。

3. login_required装饰器 判断用户是否登录

3.1.定义View子类封装login_required装饰器

  • 提示:LoginRequired(object)依赖于视图类View,复用性很差。

3.2、定义验证用户是否登录扩展

在项目根木下utils包下,新建views.py

注意一下,这里为什么不在user.utils.py中写?

from django.http import JsonResponse

# 定义一个装饰器,验证是否已经登陆
def login_required(func):
    # func:是视图函数
    def wrapper(request, *args, **kwargs):
        # 添加功能代码
        if request.user.is_authenticated:
            return func(request, *args, **kwargs)
        else:
            return JsonResponse({
   'code': 400, 'errmsg': '您未登陆!'}, status=401)

    return wrapper

4、用户中心页接口

from aerf_mall.utils.views import login_required  # 注意修改导包路径
from django.utils.decorators import method_decorator #主要的作用就是解决装饰器不能直接的装饰类视图函数

class UserInfoView(View):

    @method_decorator(login_required)
    def get(self, request):

        # 1、获取用户对象
        user = request.user

        # 2、构造响应数据返回
        return JsonResponse({
   
            'code': 0,
            'errmsg': 'ok',
            'info_data': {
   
                'username': user.username,
                'mobile': user.mobile,
                # 'email': user.email,    # email模型没写,暂时先注释
                # 'email_active': user.email_active   # email模型没写,暂时先注释
            }
        })

urls.py

# 用户中心的子路由
 re_path(r'^info/$', UserInfoView.as_view()),

在这里插入图片描述

用户中心

1. 用户基本信息逻辑分析

在这里插入图片描述

以下是要实现的后端逻辑

  1. 用户模型补充email_active字段
  2. 查询并展示用户基本信息
  3. 添加邮箱
  4. 发送邮箱验证邮件
  5. 验证邮箱
  6. 安装包:pip install itsdangerous

2.用户模型补充email_active字段 users.models.py

from django.db i
  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

主打Python

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值