Django 中自定义用户模型及集成认证授权功能总结

本文详细介绍了在Django中如何自定义用户模型,包括创建单独的应用accounts,集成CustomUser模型,定制模板文件以及实现认证和授权功能。通过自定义字段和集成到后台管理界面,增强了用户管理的灵活性。此外,文章还涵盖了登录、注销、密码修改等功能的实现,以及限制未登录用户和权限不足用户的访问。
摘要由CSDN通过智能技术生成

1. 概述

Django 中的 django.contrib.auth 应用提供了完整的用户及认证授权功能。

Django 官方推荐基于内置 User 数据模型创建新的自定义用户模型,方便添加 birthday 等新的用户字段和功能。

本文包含的内容有:

  • 介绍在 Django 中如何自定义用户模型,并集成到系统。
  • 定制 django.contrib.auth 应用使用的模板文件。
  • 在系统中集成认证与授权功能。

以下所有示例在 Python 3.8.2 + Django 2.1 中实现。

2. 自定义用户模型

2.1. 创建认证与授权相关的单独应用 accounts

$ python manage.py startapp accounts

将应用添加到项目中:

# project_dir/settings.py
INSTALLED_APPS = [
    # Local
    'accounts.apps.AccountsConfig',
    #...
]

2.2. 创建自定义用户模型 CustomUser

Django 官方文档中推荐基于 AbstractBaseUser 创建自定义用户模型,但是一般基于 AbstractUser 创建再方便。

本命中的自定义 CustomUser 中新增了字段 birthday。

# accounts/models.py

from django.db import models
from django.contrib.auth.models import AbstractUser

class CustomUser(AbstractUser):

    birthday = models.DateField(null=True, blank=True)

2.3. 集成自定义用户模型

通过 AUTH_USER_MODEL 告诉系统新的用户模型:

# project_dir/settings.py
AUTH_USER_MODEL = 'accounts.CustomUser'

之后可通过 get_user_model() 获取该自定义用户模型:

# in view or model files
from django.contrib.auth import get_user_model

CustomUser = get_user_model()

django.contrib.auth 应用已实现了完整的 login, logout 功能,并已在 django.contrib.auth.urls 中定义了 login, logout, password_change, password_change_done, password_reset, password_reset_done, password_reset_confirm, password_reset_complete 等 URL。

django.contrib.auth.urls 集成到项目中:

# project_dir/urls.py
from django.urls import path, include
urlpatterns = [
   path('accounts/',  include('django.contrib.auth.urls'),
   #...
]

集成后,即可访问 /accounts/login/, /accounts/logout/, /accounts/password_change/ 等功能,同时时视图和模板中也可访问这个 URL 定义:

<!-- in template files -->
<a href="{% url 'login' %}">Login URL</a>
  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值