Sas*_*che 4 python authentication django django-authentication django-users
因此,我是Django的新手。尽管我的代码在遵循Django文档“在Django中自定义身份验证”后可以工作,但我不知道示例中的self.model(...)实际如何工作,它的来源以及如何与'自'。
这是在文档底部找到的示例。
from django.db import models
from django.contrib.auth.models import (
BaseUserManager, AbstractBaseUser
)
class MyUserManager(BaseUserManager):
def create_user(self, email, date_of_birth, password=None):
"""
Creates and saves a User with the given email, date of
birth and password.
"""
if not email:
raise ValueError('Users must have an email address')
-> user = self.model(
email=self.normalize_email(email),
date_of_birth=date_of_birth,
)
user.set_password(password)
user.save(using=self._db)
return user
...
Run Code Online (Sandbox Code Playgroud)
好吧,您在这里定义的是一个MyUserManager类。这是从BaseUserManager类[GitHub]继承的。这是Manager[GitHub]类的子类。实际上,您一直都在使用manager。例如SomeModel.objects是一个经理。
如果使用了管理器,则管理器具有对其管理的模型的引用。因此SomeModel.objects是一个经理,但经理有一个属性.model,实际上是指回SomeModel班。
现在,Python中的类通常是可调用的。例如int('42'),如果调用,则调用int(..) 构造函数。在这种情况下,您的self.model意愿-默认情况下-由User模型决定(尽管可以被覆盖)。
现在,在Django中,模型的构造函数采用名为参数的参数来构造模型实例。如果编写User(date_of_birth=date(2018, 7, 3), email='bob@work.com'),则构造一个未保存的 User实例,其2018年7月3日的字段值为as date_of_birth和'bob@work.com'as email。
因此,您通常在此处构造一个User实例(或用于表示Users 的另一个模型的实例)。然后,您以后可以使用user.save()将该实例保存到数据库,然后将其返回。
| 归档时间: |
|
| 查看次数: |
1301 次 |
| 最近记录: |