赞
踩
Django 中的 django.contrib.auth
应用提供了完整的用户及认证授权功能。
Django 官方推荐基于内置 User 数据模型创建新的自定义用户模型,方便添加 birthday
等新的用户字段和功能。
本文包含的内容有:
django.contrib.auth
应用使用的模板文件。以下所有示例在 Python 3.8.2 + Django 2.1 中实现。
$ python manage.py startapp accounts
将应用添加到项目中:
# project_dir/settings.py
INSTALLED_APPS = [
# Local
'accounts.apps.AccountsConfig',
#...
]
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)
通过 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>
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。