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' %}" />
我的文件夹处理:
- OntoLogica(主文件夹)
- Ontologica(项目文件夹)
- 静态文件夹
- icomoon_style.css
- style.css
- 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'),
)
它非常适合我,我希望它也能帮助其他人。谢谢
我是 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' %}" />
我的文件夹处理:
- OntoLogica(主文件夹)
- Ontologica(项目文件夹)
- 静态文件夹
- icomoon_style.css
- style.css
- 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'),
)
它非常适合我,我希望它也能帮助其他人。谢谢