Heroku app.json设置默认的django管理员密码

时间:2015-11-23 07:17:13

标签: python django heroku django-1.8

我正在尝试添加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的仪表板配置它。我希望这允许非技术人员仍然能够部署应用程序而无需通过终端和所有。有没有办法做到这一点?

1 个答案:

答案 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的配置页面并在运行脚本后删除环境变量。