【问题标题】:Deploy Django on Heroku在 Heroku 上部署 Django
【发布时间】:2017-06-24 10:11:21
【问题描述】:

我的python版本是3.5.2

Django 版本是 1.8.13

我制作了一个 django 应用程序并想部署到 heroku。

当我输入heroku open

然后本地服务器显示应用错误。

谷歌搜索后。

我修复了我的 wsgi.py,但仍然出错。

.ImproperlyConfigured: Requested setting CACHES, but settings are not configured. 
You must either define the environment variable DJANGO_SETTINGS_MODULE or call settings.configure() before accessing settings.

"'DJANGO_SETTINGS_MODULE' environment variable must be set   

"django.core.exceptions.ImproperlyConfigured: 'DJANGO_SETTINGS_MODULE' environment variable must be set before importing 'whitenoise.django'

File "/app/.heroku/python/lib/python3.5/site-packages/gunicorn/arbiter.py", line 506, in reap_workers raise HaltServer(reason, self.WORKER_BOOT_ERROR)

gunicorn.errors.HaltServer: <HaltServer 'Worker failed to boot.' 3>

wsgi.py

import os

os.environ.setdefault("DJANGO_SETTINGS_MODULE", "weather_station.settings")

from django.core.wsgi import get_wsgi_application

from whitenoise.django import DjangoWhiteNoise 

application = DjangoWhiteNoise(get_wsgi_application())

setting.py

local_setting.py

有什么我遗漏的关键概念吗?

[更新]

过程文件

web: gunicorn weather_station.wsgi --pythonpath weather_station

【问题讨论】:

  • 请出示您的 Procfile。

标签: python django heroku


【解决方案1】:

heroku config:set DJANGO_SETTINGS_MODULE=weather_station.settings

这是手动方式

【讨论】:

    【解决方案2】:

    我使用这种方式来设置设置。你可以参考这个 django settings for heroku by django girls 或最好按照heroku docs 的说明进行操作

    【讨论】:

      【解决方案3】:

      此处settingsBASE_DIR 位置被local_settingsBASE_DIR 覆盖。因此,请尝试将以下行移至 settings.py 的最顶部。

      try: 
          from .local_settings import * 
      except ImportError: 
          pass
      

      我建议您按照以下结构和平处理本地和实时服务器的设置。

      settings/
          __init__.py
          base.py
          local.py
          production.py
      

      base.py 中为localproduction 添加通用设置

      还有local.py

      import * from .base.py
      // Other settings required only for local server like 
      // Example DEBUG = True
      

      生产.py

      import * from .base.py
      // Other settings required only for live server
      // Example DEBUG = False
      

      将您的生产设置指向wsgi.py。所以,改变

      os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings")
      

      os.environ.setdefault("DJANGO_SETTINGS_MODULE", "project_name.settings.production"
      

      要启动本地服务器,请在启动本地服务器时指出本地设置。

      ./manage.py runserver --settings=project_name.settings.local
      

      希望这会有所帮助。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-09-12
        • 2013-07-05
        • 2017-05-06
        • 2020-07-11
        • 2021-07-30
        • 1970-01-01
        • 2015-03-28
        • 2020-08-07
        相关资源
        最近更新 更多