python - 创建一个自定义超级用户作为我参加的课程的一部分
问题描述
我目前正在学习一个自定义 REST API 类,它教我构建自己的自定义 REST API 以进行身份验证,以及创建自定义用户模型。
我在以下代码库中遇到了一个小问题:
from django.db import models
from django.contrib.auth.models import AbstractBaseUser
from django.contrib.auth.models import PermissionsMixin
from django.contrib.auth.models import BaseUserManager
# Create your models here.
class UserProfileManager(BaseUserManager):
""" Manager for User Profiles"""
def create_user(self, email, name, password=None):
""" Create a new user profile"""
if not email:
raise ValueError('Users must have an email address')
email = self.normalize_email(email)
user = self.model(email=email, name=name)
""" user.set_password(password) encrypts the passwords as a hash """
user.set_password(password)
""" This allows you to specify which database to use for the user accounts. Django Supports multiple Databases!!! 8D """
user.save(using=self._db)
return user
def create_superusr(self, email, name, password):
""" Create and save a new superuser with given details """
user = self.create_user(email, name, password)
user.is_superuser = True
user.is_staff = True
user.save(using=self._db)
return user
class UserProfile(AbstractBaseUser, PermissionsMixin):
""" Database model for users in system """
email = models.EmailField(max_length=255, unique=True)
name = models.CharField(max_length=255)
is_active = models.BooleanField(default=True)
is_staff = models.BooleanField(default=False)
objects = UserProfileManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['name']
def get_full_name(self):
""" Retrieve Full Name of User"""
return self.name
def get_short_name(self):
""" Retrieve short name of User"""
return self.name
def __str__(self):
"""Return String representation of our User """
return self.email
主要问题在 UserProfileManager 部分,根据错误输出的问题与 create_superuser 部分有关。
错误消息如下:
AttributeError:“UserProfileManager”对象没有属性“create_superuser”
我已检查以确保在我的 settings.py 文件中确保使用自定义模型,并且我已检查以确认 makemigrations 和 migrations 命令已运行。我还通过删除初始化文件以及数据库并重建它们进行了测试。
我还测试了确保超级用户正常工作,并且启用了 django 管理门户,所有这些没有自定义用户配置文件都可以正常工作,但是它会中断,所以我知道我的问题应该与上面的代码部分有关,但我找不到任何东西。我已经检查了官方 django 文档,但我现在不知所措。
解决方案
我发现了我的错误。E 表示错误,如 def create_superusEr 中缺少的 e。
我现在很好!这个网站太棒了!有时只问问题有助于回答问题。
推荐阅读
- sql - 无法正确查询 bigquery - 不支持引用其他表的相关子查询
- java - RxJava 合并 Flowable 和 Completable
- angular - 如何使用 Angular 6 控制表格中的字段?
- spring-boot - Springboot 1.5.7 - Hikari CP 2.7.8 配置被忽略
- jquery - 在基本网格中禁用悬停效果 - 仅在手机上
- javascript - 为什么我不能在括号中使用文档?
- android - MPAndroidchart 两轴重叠
- elasticsearch - 如何从 Elasticsearch 索引中的两个字段派生一个字段?
- angular - 如何在不同的项目中使用自定义的 Angular 模块
- python - 如何在熊猫中读取excel文件,其中每个单元格中的列多于一行