我尝试了大约2个小时,以弄清为什么我的Django静态文件未加载。 这是我在settings.py中的静态文件配置:
STATIC_URL = '/static/'
MEDIA_URL = '/media/'
STATICFILES_DIRS = [os.path.join(BASE_DIR, 'static_in_env')]
STATIC_ROOT = os.path.join(BASE_DIR, 'static')
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')
这是我的base.py的一部分:
{% load static %}
<link rel="stylesheet" type="text/css" href="{% static 'styles/bootstrap4/bootstrap.min.css' %}">
<link href="{% static 'plugins/font-awesome-4.7.0/css/font-awesome.min.css" rel="stylesheet" type="text/css'%}%">
这是我的目录树:
D:.
├───.vscode
├───blog
│ ├───migrations
│ │ └───__pycache__
│ └───__pycache__
├───courses
│ ├───migrations
│ │ └───__pycache__
│ └───__pycache__
├───lingua
├───main
│ ├───migrations
│ │ └───__pycache__
│ └───__pycache__
├───pia
│ └───__pycache__
├───posts
│ ├───migrations
│ │ └───__pycache__
│ └───__pycache__
├───static
│ ├───admin
│ │ ├───css
│ │ │ └───vendor
│ │ │ └───select2
│ │ ├───fonts
│ │ ├───img
│ │ │ └───gis
│ │ └───js
│ │ ├───admin
│ │ └───vendor
│ │ ├───jquery
│ │ ├───select2
│ │ │ └───i18n
│ │ └───xregexp
│ ├───images
│ ├───js
│ ├───plugins
│ │ ├───easing
│ │ ├───font-awesome-4.7.0
│ │ │ ├───css
│ │ │ ├───fonts
│ │ │ ├───less
│ │ │ └───scss
│ │ ├───OwlCarousel2-2.2.1
│ │ ├───parallax-js-master
│ │ ├───progressbar
│ │ └───video-js
│ └───styles
│ └───bootstrap4
├───static_in_env
└───templates
├───blog
├───courses
├───main
└───posts
您能帮我弄清楚为什么静态文件无法正常工作吗。
答案 0 :(得分:1)
如果我理解正确,您的代码将在目录 static_in_env
中查找您的 css 文件,该目录由您选择的 STATICFILES_DIRS
参数给出。该列表是静态文件的来源,因此将您希望在项目中使用的所有 css 脚本等的路径添加到此列表中。一旦您调用 collectstatic
,这些文件将被收集到 STATIC_ROOT
文件夹中(最初应该是空的),最后,可以通过 STATIC_URL
在(测试或生产)服务器上访问,e。 G。通过您的浏览器。
我想您现在已经自己弄清楚了,但我会尝试在您的代码中将 static_in_env
替换为 static
,因为这是 styles
的父级,并且plugins
显示在您的模板中。另一方面,您可能希望为每个应用创建 static
和 template
子文件夹,但这取决于您。
顺便说一句,根据我自己的经验:确保您的 BASE_DIR
参数准确指向您想要的位置。在创建名为“mysite”的项目(父项将包含 mysite/mysite
和子项 manage.py
)时,您通常会得到两个相同的目录 (settings.py
),我总是觉得这有些令人困惑。这能解释您提到的 STATIC_ROOT
错误吗?
如果 Django documentation 在这方面更主动一点,那可能不会有什么坏处;)
答案 1 :(得分:0)
您的STATICFILES_DIR
看起来不正确。
尝试一下:
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
YOURAPP_DIR = os.path.join(BASE_DIR, 'yourapp')
STATIC_URL = '/static/'
STATICFILES_DIR = [
os.path.join(YOURAPP_DIR, 'static')
]
yourapp
是应用程序(而不是项目)的名称。
现在在您的模板上,您可以像这样访问它们:
{% load static %}
<link src="{% static 'someFile.css' %}">
如果css
文件夹中有一个名为static
的文件夹,则可以按以下方式访问该文件夹中的文件:
<link src="{% static 'css/someFile.css' %}">