我们已经学习了如何在应用程序中添加静态文件static
文件夹,以及如何在应用程序中使用它。
但是,如果项目中的其他应用程序想要使用该文件怎么办?
然后我们必须在根目录上创建一个文件夹并将文件放在那里。
仅仅创建一个是不够的static
根目录中的文件夹,Django 将修复其余部分。我们必须告诉 Django 在哪里寻找这些静态文件。
首先在项目的根级别创建一个文件夹,这个文件夹可以命名为任何你喜欢的名称,我将命名它mystaticfiles
在本教程中:
my_tennis_club
db.sqlite3
manage.py
my_tennis_club/
members/
mystaticfiles/
添加 CSS 文件mystaticfiles
文件夹,名称是您选择的,我们将其命名为myglobal.css
在这个例子中:
my_tennis_club
db.sqlite3
manage.py
my_tennis_club/
members/
mystaticfiles/
myglobal.css
打开 CSS 文件并插入以下内容:
my_tennis_club/mystaticfiles/myglobal.css
:
body {
color: violet;
}
你必须告诉 Django 也在以下目录中查找静态文件mystaticfiles
根目录中的文件夹,这是在settings.py
文件:
添加一个STATICFILES_DIRS
列表:
my_tennis_club/my_tennis_club/settings.py
:
.
.
STATIC_ROOT = BASE_DIR / 'productionfiles'
STATIC_URL = 'static/'
#Add this in your settings.py file:
STATICFILES_DIRS = [
BASE_DIR / 'mystaticfiles'
]
.
.
在里面STATICFILES_DIRS
list,您可以列出 Django 应在其中查找静态文件的所有目录。
这个BASE_DIR
关键字代表项目的根目录,与/ "mystaticfiles"
,这意味着mystaticfiles
根目录下的文件夹。
如果有同名的文件,Django 将使用该文件的第一个匹配项。
搜索从列出的目录开始STATICFILES_DIRS
,使用您提供的订单。然后,如果没有找到该文件,则继续搜索static
每个应用程序的文件夹。
现在你有一个全球的整个项目的 CSS 文件,可以从所有应用程序访问该文件。
要在模板中使用它,请使用与在模板中使用的语法相同的语法myfirst.css
文件:
使用以下内容开始模板:
{% load static %}
并像这样引用该文件:
<link rel="stylesheet" href="{% static 'myglobal.css' %}">
my_tennis_club/members/templates/template.html
:
{% load static %}
<!DOCTYPE html>
<html>
<link rel="stylesheet" href="{% static 'myglobal.css' %}">
<body>
{% for x in fruits %}
<h1>{{ x }}</h1>
{% endfor %}
</body>
</html>
运行示例 »
那是对的。您需要再次收集静态文件。
运行collectstatic命令收集新的静态文件:
py manage.py collectstatic
这将产生这样的结果:
You have requested to collect static files at the destination
location as specified in your settings:
C:\Users\
Your Name\myworld\my_tennis_club\productionfiles
This will overwrite existing files!
Are you sure you want to do this?
Type 'yes' to continue, or 'no' to cancel:
输入是:
Type 'yes' to continue, or 'no' to cancel: yes
这将产生这样的结果:
1 static file copied to 'C:\Users\
Your Name\myworld\my_tennis_club\productionfiles', 131 unmodified.
启动服务器,示例将运行:
py manage.py runserver
在自己的浏览器中查看结果:127.0.0.1:8000/testing/
。
my_tennis_club/members/templates/template.html
:
{% load static %}
<!DOCTYPE html>
<html>
<link rel="stylesheet" href="{% static 'myglobal.css' %}">
<body>
{% for x in fruits %}
<h1>{{ x }}</h1>
{% endfor %}
</body>
</html>
运行示例 »
截取页面反馈部分,让我们更快修复内容!也可以直接跳过填写反馈内容!