我正在尝试添加depoly to heroku button,我按照他们的示例进行操作,最后使用以下app.json为我的django应用
createDialogWithoutDateField().show();
执行{
"name": "foo",
"description": "foo website",
"repository": "https://github.com/foo/bar",
"keywords": ["python", "django", "foobar"],
"env": {
"DJANGO_SECRET_KEY": {
"description": "A randomly generated secret to secure your Django installation",
"generator": "secret"
}
},
"scripts": {
"postdeploy": "sh -c 'python manage.py syncdb --noinput; python manage.py migrate --noinput'"
}
}
将创建auth表等,但我需要的是允许想要部署应用程序的用户指定默认的管理员用户名和密码。我意识到,如果我们想创建一个超级用户,那么syncdb
会提示用户,但这并不是我需要的。当用户点击按钮时,我需要从Heroku的仪表板配置它。我希望这允许非技术人员仍然能够部署应用程序而无需通过终端和所有。有没有办法做到这一点?
答案 0 :(得分:1)
django-extensions
来做到这一点。我制作了一个python脚本
# create_admin.py
import os
if "ADMIN_USER" in os.environ and "ADMIN_PASSWORD" in os.environ:
from django.contrib.auth.models import User
user=User.objects.create_user(os.environ['ADMIN_USER'], password=os.environ['ADMIN_PASSWORD'])
user.is_superuser=True
user.is_staff=True
user.save()
并更改了app.json
"scripts": {
"postdeploy": "sh -c 'python manage.py syncdb --noinput; python manage.py migrate --noinput; python manage.py runscript create_admin'"
}
请务必阅读django-extensions
个文档,详细了解如何放置脚本以及如何python manage.py runscript
。
重要提示:您可能需要访问herkou的配置页面并在运行脚本后删除环境变量。