问题描述
我已经使用docker-compose.yml命令创建了我无法登录的超级用户:
sh -c "sleep 5 &&
#<snip>
echo A-fj... create superuser acct... &&
echo DJANGO_SUPERUSER_PASSWORD=$DJANGO_SUPERUSER_PASSWORD &&
echo DJANGO_SUPERUSER_EMAIL=$DJANGO_SUPERUSER_EMAIL &&
echo DJANGO_SUPERUSER_USERNAME=$DJANGO_SUPERUSER_USERNAME &&
python manage.py createsuperuser --noinput --username $DJANGO_SUPERUSER_USERNAME --email $DJANGO_SUPERUSER_EMAIL &&
echo Z-fj... create superuser acct... done. &&
#<snip>
sleep 5 "
环境变量显示完美,并且创建了一个帐户,我可以使用dBeaver在数据库中看到该帐户。
当我通过“ $ python manage.py createsuperuser”对话框手动添加第二个用户时,我最终获得了一个可以登录的帐户。
当我将密码从User2复制到User1时,我可以使用User2密码登录到User1,所以这似乎是密码。
当我比较User1(原始用户)和User2(新用户)的密码时,它们看起来是不同的格式...
我不确定,但是认为这可能是问题的线索... 密码1较短,并且没有密码2较长的部分...
密码1:
!GSU8f8hmNOl1oJBfe1Epk7ocJiXXWQQp3G0mh9TC
密码2: pbkdf2_sha256 $ 120000 $ IAkHkB3ME9aB $ p0hrZPkLeSWK0IafqVQ1dEtR5kgBol7WnU7QELoo6KE =
为了防止万一,但我尝试了几种不同的密码
解决方法
您应在非交互模式下设置DJANGO_SUPERUSER_PASSWORD
环境变量,否则将不会设置密码(在这种情况下,Django密码将设置为不可用的字符串)
以documentation的状态
,在非交互模式下,USERNAME_FIELD和必填字段 (列在REQUIRED_FIELDS中)回退到 DJANGO_SUPERUSER_
环境变量,除非 它们被命令行参数覆盖。例如, 提供一个电子邮件字段,您可以使用DJANGO_SUPERUSER_EMAIL环境 变量。
您是否正在尝试使用看起来像这样的行设置环境变量
...
echo DJANGO_SUPERUSER_PASSWORD=$DJANGO_SUPERUSER_PASSWORD
...
因为我认为这只是在回显该字符串,这就是为什么不用密码创建超级用户的原因。
如果您不确定在调用createsuperuser
之前是否已设置变量,请在该命令之前转储环境变量。
尝试删除回声。
,不,回声只是回声。 就在那里进行故障排除