python Django:静态文件不在本地服务

cetgtptt  于 2023-05-16  发布在  Python
关注(0)|答案(1)|浏览(75)

我知道这个问题以前被问过,我已经尝试了许多不同的配置来解决这个问题。在开发时,我在本地提供静态文件没有问题,但是,如果我没记错的话(由于浏览器缓存,我不知道确切的情况),我运行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

1wnzp6jl

1wnzp6jl1#

在生产中,你应该通过像nginx这样的web服务器来处理静态文件,你可以使用一些像白色噪声这样的软件包,它可以为你提供静态文件,而不需要任何web服务器,比如这样的配置

location /static/{
    autoindex on;
    alias /home/app/django-app/staticfiles/; // => the path to the static folder
}

在nginx配置中

相关问题