Django2.x

静态文件

  • 什么是静态文件: 如: 图片、css、js等都是静态文件

  • 静态文件配置 - setting.py 文件中

  • 1、配置静态文件的访问路径【该配置默认存在】

    • 通过哪个URL地址找到静态文件
    • STATIC_URL: '/static/'
    • 说明:
  • 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;

  • 项目目录下修改的文件:

    • MyDjango
      • MyDjango
        • setting.py
        • urls.py
        • views.py
      • public_static
        • image
          • public_img.png
      • public_templates
        • test_static.html
# 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>
原文地址:https://www.cnblogs.com/gxfaxe/p/15017424.html