- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在django修改用户模型后报错
当我要创建一个 super 用户时,它没有提示输入用户名,而是跳过它,反正对象属性用户名仍然需要,导致用户创建失败。
import jwt
from django.db import models
from django.contrib.auth.models import (AbstractBaseUser, BaseUserManager,
PermissionsMixin)
from datetime import datetime, timedelta
from django.conf import settings
# from api.core.models import TimeStampedModel
class AccountManager(BaseUserManager):
def create_user(self, username, email, password=None, **kwargs):
if not email:
raise ValueError('Please provide a valid email address')
if not kwargs.get('username'):
# username = 'what'
raise ValueError('User must have a username')
account = self.model(
email=self.normalize_email(email), username=kwargs.get('username'))
account.set_password(password)
account.save()
return account
def create_superuser(self,username, email, password, **kwargs):
account = self.create_user(username, email, password, **kwargs)
account.is_admin = True
account.save()
return account
class Account(AbstractBaseUser):
email = models.EmailField(unique=True)
username = models.CharField(max_length=40, unique=True)
first_name = models.CharField(max_length=40)
last_name = models.CharField(max_length =40, blank=True)
tagline = models.CharField(max_length=200, blank=True)
is_admin = models.BooleanField(default=False)
USERNAME_FIELD = 'email'
REQUIRED_FIELD = ['username']
objects = AccountManager()
def __str__(self):
return self.username
@property
def token(self):
return generate_jwt_token()
def generate_jwt_token(self):
dt = datetime.now + datetime.timedelta(days=60)
token = jwt.encode({
'id': self.pk,
'exp': int(dt.strftime('%s'))
}, settings.SECRET_KEY, algorithm='HS256')
return token.decode('utf-8')
def get_full_name(self):
return ' '.join(self.first_name, self.last_name)
def get_short_name(self):
return self.username
结果是:
manage.py createsuperuser
Running 'python /home/gema/A/PyProject/janet_x/janet/manage.py createsuperuser' command:
Email: admin@nister.com
Password:
Password (again):
Traceback (most recent call last):
File "/home/gema/A/PyProject/janet_x/janet/manage.py", line 22, in <module>
execute_from_command_line(sys.argv)
File "/home/gema/.virtualenvs/JANET/lib/python3.5/site-packages/django/core/management/__init__.py", line 367, in execute_from_command_line
utility.execute()
File "/home/gema/.virtualenvs/JANET/lib/python3.5/site-packages/django/core/management/__init__.py", line 359, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "/home/gema/.virtualenvs/JANET/lib/python3.5/site-packages/django/core/management/base.py", line 294, in run_from_argv
self.execute(*args, **cmd_options)
File "/home/gema/.virtualenvs/JANET/lib/python3.5/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 63, in execute
return super(Command, self).execute(*args, **options)
File "/home/gema/.virtualenvs/JANET/lib/python3.5/site-packages/django/core/management/base.py", line 345, in execute
output = self.handle(*args, **options)
File "/home/gema/.virtualenvs/JANET/lib/python3.5/site-packages/django/contrib/auth/management/commands/createsuperuser.py", line 183, in handle
self.UserModel._default_manager.db_manager(database).create_superuser(**user_data)
TypeError: create_superuser() missing 1 required positional argument: 'username'
当我使用 shell 时:
Account.objects.create(u'administer', u'admin@ister.com', u'password123')
它返回:
return getattr(self.get_queryset(), name)(*args, **kwargs)
TypeError: create() takes 1 positional argument but 3 were given
可能有什么问题?谢谢。
最佳答案
REQUIRED_FIELD
应该是 REQUIRED_FIELDS
(复数),否则系统不会提示您输入用户名(或任何其他必填字段),因为 Django 在 REQUIRED_FIELDS
。
例如,我在我的一个项目中使用了这个 UserManager:
class UserManager(BaseUserManager):
def create_user(self, email, password=None, first_name=None, last_name=None, **extra_fields):
if not email:
raise ValueError('Enter an email address')
if not first_name:
raise ValueError('Enter a first name')
if not last_name:
raise ValueError('Enter a last name')
email = self.normalize_email(email)
user = self.model(email=email, first_name=first_name, last_name=last_name, **extra_fields)
user.set_password(password)
user.save(using=self._db)
return user
def create_superuser(self, email, password, first_name, last_name):
user = self.create_user(email, password=password, first_name=first_name, last_name=last_name)
user.is_superuser = True
user.is_staff = True
user.save(using=self._db)
return user
USERNAME_FIELD
设置为 email
,REQUIRED_FIELDS
设置为 ('first_name', 'last_name')
。您应该能够调整此示例以满足您的需要。
关于python - createsuperuser 没有要求用户名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41612654/
在django修改用户模型后报错 当我要创建一个 super 用户时,它没有提示输入用户名,而是跳过它,反正对象属性用户名仍然需要,导致用户创建失败。 import jwt from django.d
我正在尝试在 Django 1.6 中实现我自己的自定义用户模型,但出现此错误。 Traceback (most recent call last): File "./manage.py", li
.bash_profile export PATH="/Applications/MAMP/bin:/usr/local/bin:/usr/local/sbin:usr/local/$ export
尝试使用新的 django 1.9 版本,并通过以下方式创建一个 super 用户: python manage.py createsuperuser 而我只是想在我的本地开发环境使用一个简单的密码,
我正在使用 Django,并且我创建了一个自定义用户模型,以便能够使用电子邮件作为主要登录方法而不是用户名。一切正常,但我无法使用命令创建 super 用户 python manage.py crea
我正在尝试使用 PostGreSQL 数据库在我的服务器上部署我的 Django 应用程序(2.1.5 和 Python 3.6.6)。我像往常一样执行了“makemigrations”和“迁移”,然
我正在使用 Django 和 Cassandra 运行 Debian 服务器。我无法通过命令创建管理员用户: python manage.py createsuperuser 运行命令导致错误: ca
我正在开发一个应用程序,我在其中制作了自定义的 'User' 模型,该模型将电子邮件作为用户名,并且它依赖于另一个名为 'Company'。运行命令时 'python manage.py create
我正在尝试使用Djangoappengine 。我按照说明进行操作,但是当我到达这一步时: manage.py createsuperuser 我得到以下信息: 未知命令:“createsuperus
我正在尝试使用Djangoappengine 。我按照说明进行操作,但是当我到达这一步时: manage.py createsuperuser 我得到以下信息: 未知命令:“createsuperus
“python manage.py createsuperuser”命令给了我这个错误: Superuser creation skipped due to not running in a TTY.
我是 Django 的新手。我找到了这段代码 python manage.py createsuperuser 这有什么用?什么情况下需要? 最佳答案 来自django-docs (强调我的): Th
我有一个已部署的 Django 项目。我正在为该项目使用 virtualenv 并在其中安装了 django。我已经激活了 virtualenv。 当我输入 pip freeze 时,我得到: Dja
我正在学习 Django 并通过 this tutorial 工作在 djangoproject 网站上。到目前为止一切顺利,但我遇到了“python manage.py createsuperuse
我正在尝试从控制台创建一个对象,但不确定如何设置它。这是我的模型管理器: class MajorManager(models.Manager): def __str__(self): retu
我不知道如何在 PyDev Django shell 中执行 python manage.py createsuperuser。 我希望下面的东西能起作用,但没有任何作用。我以前从未真正使用过这些 s
嗨, 我想在 Visual Studio 中使用 Python 3.7 和 Django 2.1。我刚刚从 Visual Studio 创建了一个新的 Django 项目。它创建了 Python-Dj
我正在尝试在我的 django 应用程序引擎项目上创建一个新的 super 用户,以便访问内置的管理功能。每次当我运行时 python manage.py createsuperuser 我收到一条错
我创建了一个新的 Django 项目,我做的第一件事就是在 Django 文档的帮助下创建一个自定义用户:https://docs.djangoproject.com/en/2.0/topics/au
使用新 Configurable user model从 Django 1.5 (1, 5, 0, 'beta', 2) 运行 manage.py createsuperuser 时出现此错误尝试设置
我是一名优秀的程序员,十分优秀!