本地Django服务器无法访问App Engine静态文件,部署后正常
本地Django服务器静态文件404,部署到App Engine正常的解决办法
问题背景
按《在App Engine标准环境中运行Django》指南操作,用Google密钥+Cloud SQL代理启动本地服务器(python manage.py runserver)时,静态文件报404,但部署到App Engine后一切正常。已执行manage.py collectstatic、修改app.yaml,问题未解决。
项目相关信息
项目结构
├── app.yaml ├── cloud-sql-proxy ├── config │ ├── __init__.py │ ├── __pycache__ │ ├── settings.py │ ├── urls.py │ └── wsgi.py ├── db.sqllite3 ├── home │ ├── admin.py │ ├── apps.py │ ├── forms.py │ ├── __init__.py │ ├── migrations │ ├── models.py │ ├── __pycache__ │ ├── static │ ├── templates │ ├── tests.py │ ├── urls.py │ └── views.py ├── main.py ├── manage.py ├── noxfile_config.py ├── README.md ├── requirements-test.txt ├── requirements.txt ├── static │ ├── admin │ └── home ├── templates │ └── registration
home/static目录结构
home/static └── home ├── cgv.pdf ├── css ├── font ├── img ├── js
settings.py相关配置
STATIC_ROOT = os.path.join(BASE_DIR, 'static') STATIC_URL = "/static/" STATICFILES_DIRS = []
模板静态文件调用方式
{% static '/local/path/to/static/file' %}
解决步骤
- 添加本地静态文件服务路由
Django本地开发服务器默认不会从STATIC_ROOT提供文件,需在根urls.py(config/urls.py)中添加静态文件路由:
from django.conf import settings from django.conf.urls.static import static urlpatterns = [ # 已有路由配置 ] + static(settings.STATIC_URL, document_root=settings.STATIC_ROOT)
- 修正模板中静态文件路径
{% static %}标签里的路径要基于STATIC_URL,而非本地绝对路径。比如文件在static/home/css/style.css,应写成:
{% static 'home/css/style.css' %}
- 本地开发跳过collectstatic(可选)
若不想每次改静态文件都执行collectstatic,可在settings.py中添加STATICFILES_DIRS,让Django直接读取app的static目录:
STATICFILES_DIRS = [ os.path.join(BASE_DIR, 'home/static'), ]
内容的提问来源于stack exchange,提问作者Alexis Mjk
相关产品推荐
相关产品推荐

