Django项目中关于静态文件的引用
静态文件static的存放位置
- 在项目文件根目录下创建static,在static文件夹下创建images,css,js,plugins;
- 在应用app目录下创建static, ......
如:
/home/lyh/django/aiparallelworld/
├── static/
│ └── img/
│ └── 1.png
└── app1/
├── static/
│ └── app1/
│ └── images/
│ └── 2.png
└── templates/
│ └── index.html
└── images/
└── 3.png
静态文件在项目配置文件settings.py中的配置项
import os
# 静态文件的URL前缀
STATIC_URL = 'static/'
# 项目根目录的静态文件目录
STATICFILES_DIRS = [
os.path.join(BASE_DIR, 'static'),
]
# 静态文件的根目录(可用于部署项目到生产环境时运行`collectstatic`命令将静态文件收集到对应的文件夹内)
STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
模板文件中引用静态文件
模板文件html一般位于templates文件夹内,使用{% load static %}
来加载静态文件模板标签库,并使用{% static 'img/1.png' %}
模板标签来引用静态文件。
示例(index.html):
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset="UTF-8">
<title Index Page</title>
{% load static %}
</head>
<body>
<h1>Welcome to Django</h1>
<!-- 引用项目根目录下的静态文件 -->
<img src="{% static 'img/1.png' %}" alt="Image 1">
<!-- 引用应用app1目录下的静态文件 -->
<img src="{% static 'app1/images/2.png' %}" alt="Image 2">
<!-- 引用应用app1目录下的静态文件 这个应该也是可以的-->
<img src="{% static 'images/3.png' %}" alt="Image 3">
</body>
</html>
模板文件的渲染
若有应用,则在应用的views.py
中定义视图函数,并使用render
函数来渲染模板:
from django.shortcuts import render
def index(request):
return render(request, 'index.html')
配置URL路由(若创建了应用,则还需要在应用下创建并配置urls.py,然后在项目的urls.py中包含应用的urls.py)
应用目录下创建urls.py并配置
# 应用的urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
]
项目目录下的urls.py配置
from django.urls import path, include
urlpatterns = [
path('', views.index),
path('app1/', include('app1.urls')),
]
总结
按照上面的操作,模板文件应该就能够引用static中的静态文件了。在部署到生产环境的时候,可以通过运行python manage.py collectstatic
命令将所有用到的静态文件汇总到项目配置文件settings.py中的STATIC_ROOT = os.path.join(BASE_DIR, 'staticfiles')
定义的文件夹内。