静态文件
-
什么是静态文件: 如: 图片、css、js等都是静态文件
-
静态文件配置 - setting.py 文件中
-
1、配置静态文件的访问路径【该配置默认存在】
- 通过哪个URL地址找到静态文件
- STATIC_URL: '/static/'
- 说明:
- 指定访问静态文件时是需要通过 /static/xxx 或 http://127.0.0.1:800/static/xxx
- xxx: 表示静态文件资源的具体位置
-
2、配置静态文件的存储路径 STATICFILES_DIRS
- STATICFILES_DIRS: 保存的静态文件在服务器端的存储位置
- 配置文件: setting.py
- STATICFILES_DIRS = (os.path.joun(BASE_DIR, 'static'), )
-
3、模板中访问静态文件 - img标签为例
- 通过 {% static %} 标签访问静态文件
- 1、加载 static - {% load static %}
- 2、诗经静态资源 - {% static '静态资源路径' %}
- 3、样例:
- <img src="{% static 'images/img.png' %}">
-
**注意: **浏览器上访问静态资源时,无论项目的资源文件夹是如何命名,在浏览器上,静态资源的上级目录必须是 static,而 static 是 setting.py 文件中配置 STATIC_URL 的属性值。因为STATIC_URL 也是静态资源的起始URL;
-
比如
-
下面保存图片的文件路径是 public_static/image/public_image.png,setting.py 文件中 STATIC_URL=‘/static/’
-
在浏览器访问时URL必须是: http://127.0.0.1:8000/static/image/public_img.png
-
如果使用 http://127.0.0.1:8000/public_static/image/public_img.png 是找不到资源的
-
-
-
项目目录下修改的文件:
- MyDjango
- MyDjango
- setting.py
- urls.py
- views.py
- public_static
- image
- public_img.png
- image
- public_templates
- test_static.html
- MyDjango
- MyDjango
# setting.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [
os.path.join(BASE_DIR, 'public_templates'),
],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
# 配置静态资源的起始URL
STATIC_URL = '/static/'
STATICFILES_DIRS = [
# 设置根目录的静态资源文件夹 public_static
os.path.join(BASE_DIR, 'public_static'),
]
# 项目 utls.py
from django.contrib import admin # 导入admin功能模块
from django.urls import path, include # 导入URL编写模块
from . import views
# 整个项目的URL集合,每个元素代表一条URL信息
urlpatterns = [
# 设定admin的URL。'admin/' 代表127.0.0.1:8000/admin 地址信息,admin后面的斜杠是路径分隔符;
# admin.site.urls 是URL的处理函数,也成为了视图函数
path('admin/', admin.site.urls),
path('test_static', views.test_static),
]
# 项目 views.py
from django.shortcuts import render
# Create your views here.
def test_static(request):
return render(request, 'test_static.html')
# 项目根目录 template/test_static.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>测试静态文件</title>
</head>
<body>
<img src="http://127.0.0.1:8000/static/image/public_img.png" width="200px" height="200px">
<img src="/static/image/public_img.png" width="200px" height="200px">
{% load static %}
<img src="{% static 'image/public_img.png' %}" width="200px" height="200px">
</body>
</html>