当前位置: 首页 > news >正文

Django中关于templates目录和static目录存放位置的总结

1 templates

1.1 项目根目录下

1.1.1 结构示例

在这里插入图片描述

1.1.2 配置方式

在settings.py中,确保TEMPLATES配置如下:
在这里插入图片描述

1.1.3 适用场景

适合存放跨应用共享的模板,例如全局布局或通用组件。

1.2 每个应用目录下

1.2.1 结构示例

在这里插入图片描述

1.2.2 配置方式

settings.py中只需保留APP_DIRS: True,无需额外配置DIRS。
在这里插入图片描述

1.2.3 适用场景

适合模板与应用强关联的情况,符合Django惯例,避免模板冲突。

2 static

2.1 项目根目录下

2.1.1 结构示例

在这里插入图片描述

2.1.2 配置方式

在settings.py中配置:
在这里插入图片描述

2.1.3 适用场景

适合存放全局共享的静态文件,如通用CSS、JS或图片。

2.1.4 在templates目录的html文件中导入static目录中所需的文件

【1】导入static目录

{% load static %}
<!DOCTYPE html>......
</html>

【2】导入static中所需的文件

{% load static %}
<!DOCTYPE html><head>......<link rel="stylesheet" href="{% static 'css/style.css' %}"></head>
</html>

2.2 每个应用目录下

2.2.1 结构示例

在这里插入图片描述

2.2.2 配置方式

settings.py中无需额外配置STATICFILES_DIRS,Django会自动查找每个应用的static/应用名/目录。

2.2.3 适用场景

适合静态文件与应用强关联的情况,例如应用特有的样式或脚本

2.2.4 在templates目录的html文件中导入static目录中所需的文件

【1】导入static目录

{% load static %}
<!DOCTYPE html>......
</html>

【2】导入static中所需的文件

{% load static %}
<!DOCTYPE html><head>......<link rel="stylesheet" href="{% static 'app1/css/style.css' %}"></head>
</html>

2.3 自定义路径(如apps目录下)

2.3.1 结构示例

在这里插入图片描述

2.3.2 配置方式

在settings.py中添加自定义路径到STATICFILES_DIRS:
在这里插入图片描述

2.3.3 适用场景

适合将静态文件集中管理,同时避免与模板目录混淆。

2.3.4 在templates目录的html文件中导入static目录中所需的文件

【1】导入static目录

{% load static %}
<!DOCTYPE html>......
</html>

【2】导入static中所需的文件

{% load static %}
<!DOCTYPE html><head>......<link rel="stylesheet" href="{% static 'css/global.css' %}"></head>
</html>

3 总结

【1】templates目录,可以存放到项目根目录下,也可以存放到各子应用目录下

在settings.py的TEMPLATES配置项中,前者确保配置上 'DIRS': [os.path.join(BASE_DIR, 'templates')],后者只需确保配置上 'APPDIRS': True即可

当然,如果templates目录两者都有存放,在settings.py中两者都配置上即可

注:若templates目录存放到各子应用目录下,为了避免html模板命名冲突,
建议在每个templates目录下再创建一个对应子应用名的目录,再在该目录中存放html模板文件

【2.1】static目录,存放到项目根目录

在settings.py中,配置上 STATIC_URL = '/static/' 即可# 可选,但建议保留以支持项目根目录的staticSTATICFILES_DIRS = [ os.path.join(BASE_DIR, 'static')]在html模板文件中,引入 static 目录:{% load static %}引入 static 目录 中所需文件:如:<link rel="stylesheet" href="{% static 'css/boot.css' %}">

【2.2】static目录,存放到各子应用目录

在settings.py中,无需STATICFILES_DIRS配置,因为Django会自动查找各子应用的static/目录在html模板文件中,引入 static 目录:{% load static %}引入 static 目录 中所需文件:如:<link rel="stylesheet" href="{% static 'app1/css/boot.css' %}">

注:同样地,为了避免命名冲突,同样需要在static目录下创建子应用目录名作为静态文件的父目录

【2.3】static目录,存放到项目根目录下其他自定义位置,如apps目录

在settings.py中,配置上STATIC_URL = '/static/'  # 默认值,可自定义STATICFILES_DIRS = [BASE_DIR / "apps/static",  # 自定义静态文件目录]STATIC_ROOT = BASE_DIR / "staticcollected"  # 生产环境收集目录在html模板文件中,引入 static 目录:{% load static %}引入 static 目录 中所需文件:如:<link rel="stylesheet" href="{% static 'css/boot.css' %}">

注:
(1)关于STATIC_URL————
(1.1)作用:用于定义静态文件访问前缀的配置项。

当你在模板中使用 {% static 'filepath' %} 标签时,
Django 会自动将这个路径与STATIC_URL 组合,生成完整的静态文件访问路径;

(1.2)其值是可以自定义修改的,修改后所生成的路径前缀即为你修改的值;
(1.3)该配置无论static存放在哪,都需要在settings.py中配置上

(2)关于STATICFILES_DIRS————
(2.1)指定了静态文件的搜索路径,Django 会在此路径下查找静态文件;
(2.2)通常在static目录存放到自定义位置上,才需要显式配置

(3)关于STATIC_ROOT————
(3.1)是用于生产环境下静态文件的收集目录
(3.2)开发环境中可以不配置 STATIC_ROOT,但生产环境强烈建议配置
(3.3)无论static目录存放在哪里,生产环境都应该使用 collectstatic 命令来管理静态文件

http://www.lryc.cn/news/581254.html

相关文章:

  • Django跨域
  • python使用fastmcp包编写mcp服务端(mcp_server)和mcp客户端(mcp_client)
  • jxWebUI--用数据表输入输出数据
  • 前端进阶之路-从传统前端到VUE-JS(第三期-VUE-JS配套UI组件的选择)(Element Plus的构建)
  • SQL 表结构转 Go、Java、TS 自定义实体类,支持自编模板
  • 学习日志04 python
  • 解决kali Linux在VMware中的全局缩放问题
  • Linux:多线程---深入互斥浅谈同步
  • jvm架构原理剖析篇
  • Python之--基本知识
  • App爬虫实战篇-以华为真机手机爬取集换社的app为例
  • 11_架构演进:从单体到云原生的蜕变
  • 【Docker基础】Docker数据卷管理:docker volume prune及其参数详解
  • Apache 配置文件提权的实战思考
  • Feign调用报“请求方法POST不支持“错误
  • 在sf=0.1时测试fireducks、duckdb、polars的tpch
  • 《设计模式之禅》笔记摘录 - 4.抽象工厂模式
  • pagecache过多导致oom的排查记录
  • 单用户模式、紧急模式、救援模式有什么区别
  • LeetCode 第89题:格雷编码
  • PostgreSQL表操作
  • 深度剖析:OPENPPP2 libtcpip 实现原理与架构设计
  • python缓存装饰器实现方案
  • python中执行前置操作,后置操作的几种方法
  • 【QT】事件(鼠标、按键、定时器、窗口)
  • JVM的位置和JVM的结构体系
  • Java创建型模式---工厂模式
  • PVE DDNS IPV6
  • 基于Elasticsearch的短视频平台个性化推荐系统设计与实现
  • SwiftUI 7(iOS 26)中玻璃化工具栏的艺术