STATIC_ROOT 找不到我的静态文件

STATIC_ROOT doesn't find my static files

我是 Django 的新手,我正在尝试找到一种方法来在我的项目中加载我的 css 文件。这是我的 settings.py 文件

STATICFILES_STORAGE = 'whitenoise.django.GzipManifestStaticFilesStorage'
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
STATIC_URL = '/static/'

STATICFILES_FINDERS = (
    "django.contrib.staticfiles.finders.FileSystemFinder",
    #"django.contrib.staticfiles.finders.AppDirectoriesFinder"
)

AUTHENTICATION_BACKENDS = (
    # Uncomment the following to make Django tests pass:
    'django.contrib.auth.backends.ModelBackend',
    'allauth.account.auth_backends.AuthenticationBackend',
)

我有办法使用变量 STATICFILES_DIRS 来实现它,但它不能与其他类似变量一起使用。

我应该怎么做才能解决它?

额外信息:

我的base.html文件静态文件调用:

<link rel="stylesheet" type="text/css" href="{% static 'style.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'icomoon_style.css' %}" />
<link rel="stylesheet" type="text/css" href="{% static 'css/bootstrap.min.css' %}" />

我的文件夹处理:

正确设置静态路径。从我的项目中获得灵感。

settings.py

import os
import sys
from os.path import abspath, dirname, join

sys.path.append(join(dirname(__file__), "../applications"))
PROJECT_ROOT = abspath(dirname(__file__))

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
MEDIA_ROOT = join(PROJECT_ROOT, '../media/')
MEDIA_URL = '/media/'
STATIC_ROOT = join(PROJECT_ROOT, '../static/')
STATIC_URL = '/static/'

我的文件结构:

Main directory
              project dir
                        settings.py
                        urls.py
              media
              static folder.

docs

的 "Warning" 部分所述

This [STATIC_ROOT] should be an initially empty destination directory for collecting your static files from their permanent locations into one directory for ease of deployment; it is not a place to store your static files permanently.

所以你应该使用STATICFILES_DIRS指向你的静态文件。

最后确保在模板中使用 {% load staticfiles %} 来加载静态文件。

我找到了解决问题的方法。它是在这个网站上找到的:https://devcenter.heroku.com/articles/django-assets

我要做的事情:

添加行 PROJECT_ROOT 并将行 STATIC_ROOT 更改为:

PROJECT_ROOT = os.path.dirname(os.path.abspath(__file__))
STATIC_ROOT = os.path.join(PROJECT_ROOT, 'staticfiles')

有了这个我可以毫不费力地添加行 STATICFILES_DIRS:

STATICFILES_DIRS = (
    os.path.join(PROJECT_ROOT, 'static'),
)

它非常适合我,我希望它也能帮助其他人。谢谢