我是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' %}" />
我的文件夹处理:
答案 0 :(得分:0)
以正确的方式设置静态路径。从我的项目中了解一下。
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.
答案 1 :(得分:0)
正如docs
的“警告”部分所述这个[STATIC_ROOT]应该是一个最初为空的目标目录,用于将静态文件从其永久位置收集到一个目录中,以便于部署; 它不是永久存储静态文件的地方。
因此,您应该使用STATICFILES_DIRS
指向静态文件。
最后请确保在模板中使用{% load staticfiles %}
来加载静态文件。
答案 2 :(得分:0)
我找到了解决问题的方法。它在此网站中找到: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'),
)
它对我来说非常有效,我希望它也可以帮助别人。感谢