大部分步骤如官网的文档 :
https://devcenter.heroku.com/articles/getting-started-with-django
要将自己的django项目部署到heroku,需要添加或修改一下五个文件:
- Procfile
- requirements.txt
- runtime.txt
- wsig.py
- settings.py
前四个不易出错,我在修改settings.py时,静态文件的路径在heroku中的配置总是不能成功,而在本地却没问题,因此也坑了挺久。
后来发现,在heroku的官方文档中也有专门说明静态文件的配置的一节:https://devcenter.heroku.com/articles/django-assets
因此在此记录应该注意的地方。
settings.py中静态文件路径的设置:
BASE_DIR = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = 'staticfiles'
STATIC_URL = '/static/'
STATICFILES_DIRS = (
os.path.join(BASE_DIR, 'static'),
)
而对应的工程目录结构:
- djangoProject
- mysite
- mysite
- __init__.py
- templates
- static
- images
- css
- settings.py
- urls.py
- wsgi.py
- manage.py
- Procfile
- requirements.txt
- runtime.txt
- mysite
- mysite
(r'static/$','django.views.static.serve',{'document_root':settings.STATIC_ROOT}),
以上是比较简单可用的配置,官方的文档中有更好的推荐。
而原来在本地可以成功,在部署到heroku上却不能成功的代码:
STATIC_URL = '/static/'
STATIC_ROOT = os.path.dirname(os.path.abspath(__file__))
STATICFILES_DIRS = (
('css',os.path.join(STATIC_ROOT,'css').replace('\\','/')),
('images',os.path.join(STATIC_ROOT,'images').replace('\\','/')),
)