我正在Heroku中使用Django 2.2设置一个Web应用程序,并且能够在生产环境中成功部署它,但是每次尝试运行heroku local web
时,该应用程序都不会在本地加载css文件。
这是我在Django应用中设置文件配置的方式。
- src
- live-static
- media-root
- static-root
- main_app
- urls.py
- wsgi.py
- __init__.py
- settings
- __init__.py
- base.py
- local.py
- production.py
- pages
- __init__.py
- admin.py
- apps.py
- models.py
- tests.py
- views.py
- templates
- main_app
- home.html
- templates
- base.html
- static
- main_app
- css
-cover.css
- img
-myimage.jpg
- admin
- css
- img
- js
以下代码是生产文件和本地文件中的配置的摘录:
production.py
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR,'static'),)
STATIC_ROOT = os.path.join(BASE_DIR, 'live-static', 'static-root')
STATICFILES_STORAGE = 'whitenoise.storage.CompressedManifestStaticFilesStorage'
local.py
STATIC_URL = '/static/'
STATICFILES_DIRS = (os.path.join(BASE_DIR,'static'),)
STATIC_ROOT = os.path.join(BASE_DIR, 'live-static', 'static-root')
我的css和jpg文件不在本地渲染,但是在生产环境中渲染。
base.html
{% load static %}
<link href="{% static 'main_app/css/cover.css' %}" rel="stylesheet">
<img src="{% static 'main_app/img/myimage.jpg' %}" >
我希望当我运行heroku local web
时,我应该能够看到渲染的CSS和图像。
答案 0 :(得分:0)
我不确定这个问题的答案。但是,为什么不尝试输入heroku local:run python manage.py collectstatic
,看看它是否呈现您的页面。
很抱歉将其发布为答案而不是评论(没有很高的代表)。
答案 1 :(得分:0)
我发现local.py文件缺少中间件whitenoise.middleware.WhiteNoiseMiddleware
,该中间件对于在Django中可视化静态文件是必需的。