在 Django 中创建和管理用户身份验证

2023-04-06 00:00:00 身份验证 建和 中创
  1. 创建 User 模型

在 Django 中,用户身份验证是通过 User 模型实现的。这个模型已经在 django.contrib.auth.models 中定义好了,我们只需要在我们的应用程序中创建一个更改用户表的扩展模型,并指定它作为 User 模型。

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


class CustomUser(AbstractUser):
    """
    扩展用户模型
    """
    # 自定义字段
    bio = models.TextField(max_length=500, blank=True)
    location = models.CharField(max_length=30, blank=True)
    birth_date = models.DateField(null=True, blank=True)
  1. 配置身份验证

要开始使用身份验证,首先要在项目的 settings.py 文件中配置 AUTHENTICATION_BACKENDS 和 AUTH_USER_MODEL。

# settings.py
AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',
]

AUTH_USER_MODEL = 'myapp.CustomUser'
  1. 创建用户

可以使用 create_user() 函数创建一个新的用户。

from django.contrib.auth import get_user_model

User = get_user_model()

user = User.objects.create_user(
    username='pidancode',
    email='pidan@pidancode.com',
    password='mypassword'
)
  1. 用户登录、登出

使用 Django 内置的登录视图函数,可以非常容易地为您的应用程序添加用户身份验证功能。

# urls.py
from django.urls import path
from django.contrib.auth import views as auth_views

urlpatterns = [
    path('login/', auth_views.LoginView.as_view(), name='login'),
    path('logout/', auth_views.LogoutView.as_view(), name='logout'),
]
  1. 用户权限

Django 通过分组和权限向用户分配权限。分组是一个把一组用户连接起来的逻辑元素,而权限则是授予用户或用户组执行操作的能力。

from django.contrib.auth.models import Group, Permission

permission = Permission.objects.get(codename='my_permission')
group = Group.objects.create(name='my_group')
group.permissions.add(permission)

user.groups.add(group)

相关文章