DjangoRF实战-2-apps-users

1、用户模块

创建一个用户模块子应用,用来管理用户,和认证和授权。

1.1根目录创建apps,

为了使用方便,还需要再pycharm中设置一下资源路径,就可以自动提示

1.2注册子应用

1.3添加应用根目录到环境变量path

python导入模块时,解释器首先在内置模块中查找。如果没找到,解释器再从 sys.path 变量中的目录列表里查

找。所以我们可以将项目下的 apps 目录插入到 sys.path 中,这样既可简化我们创建新应用时的操作,也可以优化

导入效率。在配置文件中添加如下代码:

python 复制代码
import sys
from pathlib import Path

# Build paths inside the project like this: BASE_DIR / 'subdir'.
BASE_DIR = Path(__file__).resolve().parent.parent
sys.path.insert(0, str(BASE_DIR/'apps'))

2.1用户定义模型

  1. Django默认用户模型类
    Django认证系统中提供了用户模型类User保存用户的数据。
    User对象是认证系统的核心。
    Django认证系统用户模型类位置
    django.contrib.auth.models.User
    父类AbstractUser介绍
    User对象基本属性
    创建用户(注册用户)必选: username、password
    创建用户(注册用户)可选: email、first_name、last_name、last_login、date_joined、
    is_active 、is_staff、is_superuse
    判断用户是否通过认证(是否登录): is_authenticated
    创建用户(注册用户)的方法
    user = User.objects.create_user(username, email, password, **extra_fields)
    用户认证(用户登录)的方法
    from django.contrib.auth import authenticate
    user = authenticate(username=username, password=password, **kwargs)
    处理密码的方法
    设置密码: set_password(raw_password)
    校验密码: check_password(raw_password)
  2. 自定义用户模型类
    思考:为什么要自定义用户模型类?
    如今几乎所有的web应用都需要用户提供手机号码,单默认的用户模型类中没有mobile字段
    随着业务的发展,未来很可能需要自定义用户模型
    django强烈推荐在开始一个项目时设置一个自定义的用户模型
    如何自定义用户模型类?
    继承自AbstractUser(最简单可行的方法,详情见官方文档https://docs.djangoproject.com/zh-hans/3.2/topics/auth/customizing/#substituting-a-custom-user-model)
    新增 mobile 字段。

2.2迁移用户模型

  1. 指定用户模型类
    Django是通过配置项 AUTH_USER_MODEL 来确定项目中到底使用哪个用户模型,所以我们需要修改配置指定我们的自
    定义的用户模型。
    注意:应用要在 INSTALLED_APPS 中注册,且一定要在第一次迁移之前要设置好此项
    #指定本项目用户模型类 settings.py 设置
    AUTH_USER_MODEL = 'users.User'

2. 迁移用户模型类(根目录)

1.创建迁移文件

python manage.py makemigrations

2.执行迁移文件

python manage.py migrate

3、会生成一个db文件,添加到右侧的数据库中即可。

3、用户认证

1、身份验证是将传入请求与一组标识凭据(例如请求来自的用户或用于签名的令牌)相关联的机制。然后,权限和限制

策略可以使用这些凭据来确定是否应该允许请求。

  1. 安装RESTframework
  2. pip install djangorestframework
    之前安装过了,就不安装了。
    2.注册
    在配置 INSTALLED_APPS 中添加 restframework

    3、
    4、配置认证
相关推荐
学测绘的小杨16 小时前
CompassFusion:一个从 GNSS 到 GNSS/INS 组合导航的独立工程包
python
ClouGence1 天前
Oracle 数据同步为什么会出现数据不一致?长事务是常被忽略的原因
数据库·后端·oracle
zzzzzz3101 天前
当产品经理说这个很简单:我用Python自动化处理奇葩需求的实战指南
python·pycharm·产品经理
雪隐1 天前
个人电脑玩AI-06让5060 Ti给你打工——不光能画画,Qwen3-TTS还能学人说话,连我老板都信了!
人工智能·后端·python
飞将1 天前
从零实现数据库(2)——HashIndex + IndexManager
数据库
兵慌码乱1 天前
面向桌面端的资产管理系统分层架构设计与核心模块实现
python·系统架构·sqlite·pyqt5·数据库设计·桌面应用开发·mvc架构
hboot1 天前
AI工程师第三课 - 机器学习基础
python·scikit-learn·kaggle
顾林海2 天前
Agent入门阶段-编程基础-Python:流程控制
python·agent·ai编程
呱呱复呱呱2 天前
Django CBV 源码解读:一个请求是怎么找到你的 get() 方法的
python·django
Nturmoils2 天前
订单列表慢查询,先看 WHERE、ORDER BY 和 LIMIT
数据库