【发布时间】:2021-02-25 18:15:17
【问题描述】:
我对 django 和 python 还很陌生,我猜这是一个基本问题,但是如果有人能够告诉我我做错了什么和/或如何正确构建非交互式 django createsuperuser 命令(@ 987654321@),我将不胜感激。我想用它在我正在运行的谷歌云运行应用程序上创建一个超级用户,并试图让它在本地工作(在为测试目的而创建的单独应用程序上),但不能 似乎。通过大量的谷歌搜索和浏览 Stackoverflow(可能是因为它太明显了),我几乎没有发现什么。
我有一个基本的 django 应用程序,它在 Ubuntu 上本地运行,并带有 CustomUser 模型。我能够毫无问题地以交互方式创建超级用户。我在我的 settings.py 中定义了 DJANGO_SUPERUSER_PASSWORD/EMAIL/USERNAME,如下所述(我知道我将来需要删除实际值,但只想让它先工作)。
# Application definition
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
# Local
'accounts',
]
AUTH_USER_MODEL = 'accounts.CustomUser'
DJANGO_SUPERUSER_PASSWORD = 'xxx'
DJANGO_SUPERUSER_EMAIL = 'xxx@email.com'
DJANGO_SUPERUSER_USERNAME = 'xxx'
MIDDLEWARE = [
'django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware',
]
ROOT_URLCONF = 'config.urls'
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'config.wsgi.application'
# Database
# https://docs.djangoproject.com/en/3.1/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
# Password validation
# https://docs.djangoproject.com/en/3.1/ref/settings/#auth-password-validators
我的 CustomUser 模型如下(但允许交互式创建超级用户):
from django.contrib.auth.models import AbstractUser
from django.db import models
class CustomUser(AbstractUser):
pass
我尝试了各种无效的 createsuperuser 排列。下面比较明智的(我认为):
./manage.py createsuperuser --noinput --username DJANGO_SUPERUSER_USERNAME --email DJANGO_SUPERUSER_EMAIL --password DJANGO_SUPERUSER_PASSWORD
./manage.py createsuperuser --noinput --username USERNAME --email EMAIL --password PASSWORD
./manage.py createsuperuser --noinput --username DJANGO_SUPERUSER_USERNAME --email DJANGO_SUPERUSER_EMAIL
./manage.py createsuperuser --noinput --username USERNAME --email EMAIL
./manage.py createsuperuser --noinput, username=DJANGO_SUPERUSER_USERNAME, email=DJANGO_SUPERUSER_USERNAME, password=DJANGO_SUPERUSER_PASSWORD
我们将不胜感激地收到任何帮助/指导/方向!
非常感谢
【问题讨论】:
-
将自定义用户模型添加到您的问题
accounts.CustomUser -
谢谢。上面添加了自定义用户模型。目前它只是一个占位符。这可能是问题吗?只是困惑为什么我可以交互地创建超级用户?