我知道这个问题以前被问过,我已经尝试了许多不同的配置来解决这个问题。在开发时,我在本地提供静态文件没有问题,但是,如果我没记错的话(由于浏览器缓存,我不知道确切的情况),我运行python manage.py collectstatic
,然后所有静态文件都找不到了:
[15/May/2023 08:55:59] "GET /static/js/script.js HTTP/1.1" 404 179
[15/May/2023 08:55:59] "GET /static/admin/css/responsive.css HTTP/1.1" 404 179
...
下面是我的settings.py
:
DEBUG = ENV.bool("DEBUG") # set to True
INSTALLED_APPS = [
"django.contrib.staticfiles",
...
]
STATIC_URL = "static/"
STATIC_ROOT = BASE_DIR / STATIC_PATH # I have checked that the path is correct
STATICFILES_DIRS = [ # I tried with and without STATICFILES_DIRS
BASE_DIR / "vhsapp" / "static"
]
urls.py
...
if settings.DEBUG:
urlpatterns += [
static(settings.STATIC_URL, document_root=settings.STATIC_ROOT),
]
base_site.html
{% extends "admin/base_site.html" %}
{# TEMPLATE EXTENSION FOR THE DEFAULT ADMIN INTERFACE #}
{% load static %}
{% block extrahead %}
{{ block.super }}
<link rel="icon" type="image/x-icon" href="{% static 'img/favicon.png' %}"> <!-- 404 error -->
<script>
const APP_NAME = "{{ APP_NAME }}"; // variable defined correctly
</script>
{% endblock %}
Project arborescence
project_root/
├── staticfiles/ # all static files are inside this directory
├── templates/
│ └── admin/
│ └── base_site.html
├── vhs/
│ ├── .env
│ ├── urls.py
│ └── settings.py
├── vhsapp/
│ ├── static/ # additional static files (collectstatic put them inside staticfiles/)
│ ├── templates/ # additional templates
│ └── __init__.py
└── manage.py
我读过docs,但我真的不知道会发生什么。我知道这个项目有点奇怪,但以前一切都很好!
你知道我错过了什么吗?
谢谢你X1000
1条答案
按热度按时间1wnzp6jl1#
在生产中,你应该通过像nginx这样的web服务器来处理静态文件,你可以使用一些像白色噪声这样的软件包,它可以为你提供静态文件,而不需要任何web服务器,比如这样的配置
在nginx配置中