模板变量,过滤器和静态文件引用

模板路径

  • Djiango先到settings里面找templates下的DIRS查看是否有路径,也是从上往下依次寻找,找到就返回。
  • 如果DIRS没有,就到APP_DIRS里面寻找。但是APP要先在INSTALLED_APPS里面进行注册然后根据INSTALLED_APPS里面从上往下顺序依次寻找。

模板变量

  • 动态页面:随时间改变会改变相应数据内容等(并不是JS就是动态页面)
  • 静态页面:反之

  • 语法:{{变量名}},变量名命名规则和py变量一样,但是却不能以下划线_开头;注意避免关键字。

例如编写显示时间:

from datetime import datetimedef index(request):now = datetime.now()return render(request,'teacher/index.html',context={'now' : now})#HTML
<p>当前时间是:{{now}}</p>
#注意,俩个大括号里面的now对应的是context里的key的now

此时显示的时间并不是北京时间,要进行修改。
到项目目录下的settings里面最下面的TIME_ZONE = 'UTC'进行修改
改为TIME_ZONE = 'Asia/Shanghai'
(不要问我为什么不是Beijing,改成Beijing会报错,毕竟上海比较有名吧,估计是历史原因)

修改之后:

关于模板变量的解析

  • 列表list
    lt = [0,1,2]return render(request,'teacher/index.html',context={'lt':lt})#HTML
<p>传递的列表是:{{ lt }}</p>
<p>列表下标是1的元素是:{{ lt.1 }}</p>

说明:
传递列表的时候获取某个元素要使用list_name.索引的形式进行获取

结果如图:

  • 字典
dt = {'name' : '小明','age' : 1}return render(request,'teacher/index.html',context={'dt':dt})#HTML
<p>传递的字典是:{{ dt }}</p>
<p>传递的字典['name']是:{{ dt.name }}</p>

说明:同样是通过dt_name.key的形式获取某个value

结果如图:

  • 函数
    def func():return 'Hello world'return render(request,'teacher/index.html',context={'func':func})#HTML
<p>传递的func是:{{ func }}</p>

说明:
函数不能设置有参数,只能设置无参数函数。因为在解析的时候解析的是变量名,而变量名是不可以携带变量的。

结果如图:

变量解析规则

  1. 当模板引擎遇到了变量时,会计算该变量,并以结果替换之
  2. 当模板引擎遇到了变量时,按照以下顺序尝试查找:
    • 字典键值查找
    • 属性或方法查找
    • 数字索引查找
  3. 如果结果是一个可调用的(callabled),则调用他,结果为模板变量的值

解释:

  1. 如果ret = 1+1,的时候,解析出来的结果会用2代替1+1
  2. 字典.方法名,会解析出来方法的返回值;但是如果字典里面含有和方法重名的key的时候,会按照顺序,解析为所对应的value
  3. 调用函数

常用的过滤器

现在先介绍内置过滤器(自定义以后聊)

过滤器:

  • 语法:{{fruits|lower}}
  • 作用: 对变量进行过滤。在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后再替换掉原来的变量展示出来。
  • 管道符号进行链式调用,比如实现一个功能,先把所有字符变成小写,把第一个字符转换成大写。{{fruits|lower|capfirst|..|..}
  • 使用参数:过滤器可以使用参数,在过滤器名称后面使用冒号”:”再加上参数,比如要把一个字符串中所有的空格去掉,则可以使用cut过滤器,{{fruits|cut:" "}}

语法:{{变量名|过滤器}}
例如:

  • 时间的:{{name|date:"D d M Y"}}
  • 列表的:
    • name|add:数字
    • name|first/last
    • name|slice:"num:num"

注意:不要习惯性在冒号俩边加上空格,会报错

常用的过滤器:

date和time过滤器格式:

静态文件的引用

路径设置

静态文件由内建APP'django.contrib.staticfiles'管理,调试用到,实际使用不会用到
django.contrib.staticfiles这个app被包含在INSTALL_APPS中
配置语法:

#setting.py
STATICFILES_DIRS = []

步骤:

  1. 在项目根目录下创建一个static,注意要分APP文件夹
  2. 写入STATIC_URL = '/static/'(默认就有)
  3. 在settings最下面加入STATICFILES_DIRS = [os.path.join(BASE_DIR,'static')]

静态文件引用

{% load static %}#写在模板顶部#导入的时候
src = "{% static 'app_name/img/name.jpg' %}"
如此类推

转载于:https://www.cnblogs.com/pygive/p/10607779.html

模板变量,过滤器和静态文件引用相关推荐

  1. Django-2- 模板路径查找,模板变量,模板过滤器,静态文件引用

    模板路径查找 路径配置 2. templates模板查找有两种方式 2.1 - 在APP目录下创建templates文件夹,在文件夹下创建模板 2.2 - 在项目根目录下创建templates文件夹, ...

  2. 模板路径,模板变量,过滤器和静态文件的引用

    1.模板路径的查找 -查找顺序 1.优先查找settings.py 的DIRS:[os.path.join(BASE_DIR,'templates')] 2.如果APP_DIRS:TRUE 会到INS ...

  3. 潭州课堂25班:Ph201805201 django框架 第三课 模板路径,变量,过滤器,静态文件的引用 (课堂笔记)...

    第二种方法 首先   'APP_DIRS': True, 将 app 的名字在 INSTALLED_APPS 进行注册 模板变量 传的各种数据类型,和取值 过渡器: 静态文件: 在项目文件目录 中创建 ...

  4. vue中 静态文件引用注意事项

    (一)assets文件夹与static文件夹的区别 区别一:assets文件是src下的,所以最后运行时需要进行打包,而static文件不需要打包就直接放在最终的文件中了 区别二:assets中的文件 ...

  5. Django模板、配置文件、静态文件及案例实现(创建模板、设置模板查找路径、模板接收视图传入的数据、模板处理数据、BASE_DIR、DEBUG、本地语言与时区、App应用配置)

    1.Django模板 网站如何向客户端返回一个漂亮的页面呢? 漂亮的页面需要html.css.js. 可以把这一堆字段串全都写到视图中, 作为HttpResponse()的参数,响应给客户端. 存在的 ...

  6. python怎么调用另一个py文件的变量,Python中py文件引用另一个py文件变量的方法

    Python中py文件引用另一个py文件变量的方法 最近自己初学Python,在编程是遇到一个问题就是,怎样在一个py文件中使用另一个py文件中变量,问题如下: demo1代码 import requ ...

  7. python怎么调用另一个py文件的变量_Python中py文件引用另一个py文件变量的方法

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  8. Python-Flask入门,静态文件、页面跳转、错误信息、动态网页模板

    Python-Flask入门及路由基础请参看Python-Flask入门,路由route.项目启动.修改网址端口.获取URL地址和参数.Form数据_无敌路路帅气的博客-CSDN博客 本节重点讲述静态 ...

  9. vue打包静态文件名称不加hash值和不修改文件夹结构

    背景 使用vue脚手架开发前端项目引用了大量的图片,导致每次打包后都有好几百兆的大小,即使改动不涉及一些静态的图片和音频,打包的结果依然会修改静态文件名.如果只更新js文件等,会报引用无效的错误.这是 ...

最新文章

  1. python的知识点注意事项
  2. Zeppelin:用于区块链应用的开源安全智能合约架构
  3. linux下的网络管理命令,常用linux网络管理命令(下)
  4. 出现opencv error: assertion failed..........错误时, 一步解决
  5. VI编辑器的操作模式
  6. python数字转换_Python实现中文数字转换为阿拉伯数字的方法示例
  7. 和为S的连续正数序列(双指针详解)
  8. vim显示python嵌套级_在Vim中为Python突出显示语法
  9. csv导入mysql_mysql导入超大csv指南
  10. 论文 | 多传感器数据深度图的融合:最近基于深度学习的方法(下)
  11. hnu 暑期实训之web导航
  12. 创业日记:进入电子商务领域,需未雨绸缪,更要步步谨慎
  13. iOS转前端之仿写宠物网(适配不同尺寸)
  14. 运维向运营转型,会是企业IT传统运维的发展方向吗?
  15. c语言魂斗罗小游戏代码,(搬运)魂斗罗系列游戏秘籍(包含一些解锁要数)
  16. 初始化一个java空数组_Java 数组的两种初始化方式
  17. k8s---存储之Volumes配置管理
  18. 为什么计算机连接不上打印机,为什么电脑连接打印机后却没反应
  19. 联想z5可以刷鸿蒙系统吗,联想Z5线刷刷机教程_联想Z5线刷升级更新官方系统包方法...
  20. HTTPS 前端劫持

热门文章

  1. WCF rest 的帮助页面和缓存机制
  2. 关于flash网页播放中wmode和direct
  3. go 成长路上的坑(1)
  4. apache 虚拟主机详细配置:http.conf配置详解
  5. 部署HDFS HA的环境
  6. A 子类继承父类,子类的构造函数会覆盖父类的构造函数
  7. linux gdb使用
  8. linux安装lrzsz,并使用rz sz 命令
  9. grep与egrep的区别
  10. Jenkins_获取源码编译并启动服务(二)