按照here的说明,我一直在努力部署一个小型Django网络应用程序。我只是在我的开发中使用sqlite3来构建我的应用程序,并且Django开发服务器上的一切正常。当我尝试部署到Heroku时,我收到错误" Push被拒绝,没有检测到Cedar支持的应用程序#34;但我认为我拥有启动和运行应用程序所需的所有文件。几天来一直没有成功,所以我会接受任何建议和帮助。下面是我的应用程序的草图,但请随意在我的github repo上筛选整个内容。
landcrab/
landcrab/ <----- main project
settings/
__init__.py
base.py
local.py
production.py
__init__.py
urls.py
db.sqlite3
wsgi.py
vcrental/ <----- my app
admin.py
....
static/
....
.gitignore
db.sqlite3
manage.py
Procfile
requirements.txt
runtime.txt
在manage.py
和wsgi.py
我已设置os.environ.setdefault("DJANGO_SETTINGS_MODULE", "landcrab.settings.production")
Procfile
web: gunicorn landcrab.wsgi --log-file -
requirements.txt(使用pip冻结)
Django==1.7.1
dj-database-url==0.3.0
dj-static==0.0.6
django-toolbelt==0.0.1
gunicorn==19.1.1
jsmin==2.0.11
nose==1.3.4
psycopg2==2.5.4
pyparsing==2.0.3
python-dateutil==2.2
pytz==2014.9
six==1.8.0
static3==0.5.1
runtime.txt
python-3.4.2
对于我的设置文件,我尝试关注this structure
Production.py
from landcrab.settings.base import *
import dj_database_url
DEBUG = False
TEMPLATE_DEBUG = False
# Parse database configuration from $DATABASE_URL
DATABASES['default'] = dj_database_url.config()
# DATABASES['default'] = dj_database_url.config(default='postgres://user:pass@localhost/dbname')
# DATABASES['default']['ENGINE'] = 'django.db.backends.postgresql_psycopg2'
# DATABASES = {'default': dj_database_url.config(default=os.environ.get('DATABASE_URL'))}
# DATABASES = {'default': dj_database_url.config(default='postgres://localhost')}
# Honor the 'X-Forwarded-Proto' header for request.is_secure()
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
# Allow all host headers
ALLOWED_HOSTS = ['*']
最后是wsgi.py
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "landcrab.settings.production") #Edited by me
from django.core.wsgi import get_wsgi_application
#Added by me for Heroku
try:
from dj_static import Cling
application = Cling(get_wsgi_application())
except:
application = get_wsgi_application()
答案 0 :(得分:2)
这很令人尴尬。在尝试部署到Heroku之前,我没有提交更改。提交后,我能够毫无错误地部署。