我在heroku中有一个项目(myapp),但我无法让静态文件正常工作.我正在关注这篇博文.
我Procfile看起来像这样:
web: python myapp/manage.py collectstatic --noinput; bin/gunicorn_django --workers=4 --bind=0.0.0.0:$PORT myapp/settings.py
Run Code Online (Sandbox Code Playgroud)
settings.py:
...
STATIC_ROOT = os.path.join(PROJECT_PATH, 'staticfiles')
STATIC_URL = '/static/'
ADMIN_MEDIA_PREFIX = '/static/admin/'
STATICFILES_DIRS = (
# I have the static folder inside my app and not inside the project
os.path.join(PROJECT_PATH, 'cesar/static'),
)
...
Run Code Online (Sandbox Code Playgroud)
使用heroku restart它重新启动时heroku logs显示:
...
Copying ...
114 static files copied to '/app/myapp/staticfiles'.
...
Run Code Online (Sandbox Code Playgroud)
但是当我这样做时,我heroku run ls -l myapp/看不到staticfiles文件夹:
-rw------- 1 u5605 5605 0 …Run Code Online (Sandbox Code Playgroud) 我使用"git push heroku master"将一个django应用程序部署到了heroku,它工作得很好.
然后我使用"heroku create second-app -r staging"在同一个git上创建了第二个应用程序
并推送使用:git push staging master
当我打开第二个应用程序时,没有任何静态文件被拾取或加载(即没有css,js或图像工作)
这非常令人困惑 - 请帮忙!
我的设置文件如下
import os
import platform
import dj_database_url
DEBUG = True
TEMPLATE_DEBUG = DEBUG
# This should work for any deployment
BASE_DIR = os.path.abspath(os.path.join(os.path.dirname( __file__ ), '..'))
ADMINS = (
('me', 'me@gmailcom'),
)
MANAGERS = ADMINS
# LOCAL SETTINGS
if platform.system() in ['Windows', 'Darwin']:
#EV = 'LOCAL'
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
'NAME': BASE_DIR + …Run Code Online (Sandbox Code Playgroud) 首先说我现在已经阅读了关于这个问题的多篇文章(包括这里、这里和这里)。我的理解是static urlinsettings.py需要修改 heroku 才能运行这些静态文件。我需要的,就像我小时候一样解释,是static url当静态目录嵌套在应用程序中时对这些进行什么调整——因为这是最近教程中传授的最佳实践(如果这不是理想的实践,我会感谢被纠正)。
问题1:如果该media文件被保存在目录中的应用程序内或在项目层次?
问题 2:如果媒体文件保存在应用程序内的目录中,例如我下面的目录,那么一旦推送到 heroku,我应该如何修改urlinsettings.py以加载静态文件?
我的项目结构如下:
gvlabs
__init__.py
__init__.pyc
settings.py
settings.pyc
urls.py
urls.pyc
wsgi.py
wsgi.pyc
manage.py
Procfile
requirements.txt
runtime.txt
welcome
__init__.py
__init__.pyc
admin.py
admin.pyc
apps.py
hello.py
migrations
models.py
models.pyc
static
css
fonts
images
js
templates
welcome
base.html
comingsoon.html
contact_us.html
index.html
post_list.html
tests.py
urls.py
urls.pyc
views.py
views.pyc
Run Code Online (Sandbox Code Playgroud)
设置.py
# Build paths inside the project like this: os.path.join(BASE_DIR, …Run Code Online (Sandbox Code Playgroud)