扩展现有的 User 模型

相关文档
https://docs.djangoproject.com/zh-hans/3.2/topics/auth/customizing/#authentication-backends

如果希望改变原有模型的行为可以使用:代理模型

例如,假设你想为 Person 模型添加一个方法。你可以这么做:

  1. from django.db import models
  2. class Person(models.Model):
  3. first_name = models.CharField(max_length=30)
  4. last_name = models.CharField(max_length=30)
  5. class MyPerson(Person):
  6. class Meta:
  7. proxy = True
  8. def do_something(self):
  9. # ...
  10. pass

如果希望增加与原模型相关的数据可以使用使用一个 OneToOneField到一个包含字段的模型,这种一对一的模型通常被称为 profile 模型

  1. from django.contrib.auth.models import User
  2. class Employee(models.Model):
  3. user = models.OneToOneField(User, on_delete=models.CASCADE)
  4. department = models.CharField(max_length=100)

配置

配置登录页面

  1. LOGIN_URL = '/accounts/login/'

配置登录成功后跳转的页面
默认: /accounts/profile/
当 LoginView 没有得到 next GET 参数时,登录后请求被重定向的 URL 或 命名 URL 模式。

  1. LOGIN_REDIRECT_URL = '/accounts/profile/'

配置认证后端类

  1. AUTHENTICATION_BACKENDS = [
  2. 'django.contrib.auth.backends.ModelBackend',
  3. ]

配置用户模型类

  1. AUTH_USER_MODEL = 'auth.User'

相关文档

认证相关的配置
https://docs.djangoproject.com/zh-hans/4.0/ref/settings/#auth