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、配置认证
相关推荐
TonyLee01710 分钟前
使用argparse模块以及shell脚本
python
编程小Y15 分钟前
如何优化MySQL的查询性能?
数据库·mysql
用户479492835691520 分钟前
性能提升 40 倍!实战 PostgreSQL FDW 解决微服务跨库查询难题
数据库·后端
Blossom.11831 分钟前
Prompt工程与思维链优化实战:从零构建动态Few-Shot与CoT推理引擎
人工智能·分布式·python·智能手机·django·prompt·边缘计算
计算机毕设VX:Fegn089536 分钟前
计算机毕业设计|基于springboot + vue宠物医院管理系统(源码+数据库+文档)
数据库·vue.js·spring boot·后端·课程设计
kimi-2221 小时前
LangChain 将数据加载到 Chroma 向量数据库
数据库·langchain
love530love2 小时前
Windows 11 下 Z-Image-Turbo 完整部署与 Flash Attention 2.8.3 本地编译复盘
人工智能·windows·python·aigc·flash-attn·z-image·cuda加速
麒qiqi2 小时前
理解 Linux IO 多路复用
开发语言·数据库
MediaTea3 小时前
Python:模块 __dict__ 详解
开发语言·前端·数据库·python
jarreyer3 小时前
python,numpy,pandas和matplotlib版本对应关系
python·numpy·pandas