我正试图为django中超级用户的初始设置编写一个脚本。我有一个运行django的docker容器
docker exec -it "mydockername" bash -c echo "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser('root3', 'admin3@myproject.com', 'root3')" | python manage.py shell
此脚本正在抛出一个错误
File "manage.py", line 16
) from exc
^
SyntaxError: invalid syntax
但如果我执行命令
echo "from django.contrib.auth import get_user_model; User = get_user_model(); User.objects.create_superuser('root3', 'admin3@myproject.com', 'root3')" | python manage.py shell
在docker容器内部,我没有任何问题,超级用户已经创建
试试这个:
您需要引用命令的后半部分,以便
bash -c
获得单个参数。这使得整个命令有点复杂(因为它已经使用了单引号和双引号),但是看起来如果没有这一点,您的本地shell将首先尝试分离命令,并看到
而且,由于
bash -c
只接受一个参数,因此在容器内运行的命令是您可能可以直接在主机上运行此命令(无需
docker exec
)。您需要编写一个备用的settings.py
文件,指向Docker托管的数据库(数据库主机名为localhost
,其端口通过ports:
发布),然后这些设置可以到达容器内的数据库这里最好的方法可能是避免编写通过} commands 页中所述:
docker exec
启动的带引号的shell命令运行的Python脚本。编写一个小型扩展脚本,如Django文档Writing custom ^{将其放置在
management/commands/superuser.py
中,您可以运行python manage.py superuser
(可能通过docker exec
)。Django文档讨论了添加参数和写入输出的方法相关问题 更多 >
编程相关推荐