模板变量及模板过滤器.

1.模板路径的查找

-查找顺序 1.尝试,在app目录下存放模板. -两种方案 1.app项目文件夹下存放. 2.templates文件夹下分类存放.

首先查找项目settings里的DIRS,可以定义多个路径,这是个列表.

APP_DIRS:True定义在注册app中去找.在INSTALLED_APPS列表中找,包括app下面的tem

例如:在INSTALLED_APPS中加入

teacher.apps.TeacherConfig,

或者只定teacher,

在app文件夹下面的templates文件夹名字不能变.

在app可以复用的时候可以将主要模板放在app文件夹里.

-为什么要在tempaltes里面再套一层
只要找到一个符合的模板,就返回

模板路径配置总结

在配置文件setting.py中找到TEMPLATES设置来配置。

这是一个设置选项的列表,模板大都包含两项通用设置;两种方式配置模板:

第一种: DIRS 定义一个目录列表,模板引擎按列表顺序搜索这些目录以查找模板源文件。将templates放在主项目目录下.

第二种: APP_DIRS告诉模板引擎是否应该进入每个已安装的应用中查找模板,值为True则模板会去安装了的app下面的templates文件夹查找模板。。所以我们也可以在每个app的里面创建模板目录templates存放模板,这种方式需要将这个app添加到setting.py文件的INSTALLED_APPS列表中.

先创建的app文件夹的同名index模板会覆盖掉后面的app的Index模板.

2.模板变量

模板变量的引入:

我们在页面上会看到,谁登录的就会显示谁的信息,那么这个页面上变量是怎样实现的呢?

模板变量使用规则:

1.语法: {{ 变量名 }}

2.命名由字母和数字以及下划线组成,不能有空格和标点符号,不能以下划线开头.

3.可以使用字典、模型、方法、函数、列表

4.不要和python或django关键字重名

5.变量和查找

注:如果变量是一个函数,执行函数并返回结果.

1.如果data是一个字典,那么访问data.items将会访问data这个字典的key名为items的值,而不会访问字典的items方法。

2.点在模板渲染时有特殊的含义。 变量名中点表示查找。

例子:1.app book/views.py文件.

1./templates/book/index.html 文件.

变量的值可以是任何数据类型
-变量的解析规则
各种尝试
1.计算变量,将其替换为结果
2.遇到点(.)的时候,按一下顺序查找:
-1.字典键值查找
-2.属性或方法查找
-3.数字索引查找
3.如果结果是可调用的,则调用它时不带参数。调用的结果成为模板的值.
## 所谓的结果是可调用的,说明变量是个函数,或是个方法 渲染失败返回''

3.模板过滤器 filter

作用: 对变量进行过滤。在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后再替换掉原来的变量展示出来。

语法:{{fruits|lower}}

管道符号进行链式调用,比如实现一个功能,先把所有字符变成小写,把第一个字符转换成大写。

语法:{{fruits|lower|capfirst}}

使用参数:过滤器可以使用参数,在过滤器名称后面使用冒号”:”再加上参数,比如要把一个字符串中所有的空格去掉,则可以使用cut过滤器,

语法如下: {{fruits|cut:" "}}

注意:

使用参数的时候,冒号和参数之间不能有任何空格,一定要紧挨着。

-常用模板过滤器

add 将参数与值相加 首先尝试转换成整数相加,失败,则尝试所有可能,字符串,列表等。{{ value|add:"2" }} capfirst 首字母大写,如果第一个字母不是字母则不起作用。{{ value|capfirst }} date 日期格式化 {{ value|date:"D d M Y" }} time 时间格式化 {{ value|time:"H:i" }} 格式化格式见官方文档:https://docs.djangoproject.com/en/2.1/ref/templates/builtins/#date default 如果变量解析失败,使用给定的默认值。{{ value|default:"nothing" }}(注意如果value是''空字符串,输出将会是'nothing') first 返回列表的第一个元素 {{ value|first }} last 返回列表的最有一个元素 {{ value|last }} slice 返回一个列表的切片 {{ some_list|slice:":2" }} join 连接字符串列表 与str.join(list)一样 {{ value|join:" // " }} floatformat 浮点数格式化 不指定小数位参数,默认保留一个为小数 value Template Output 34.23234 {{ value|floatformat }} 34.2 34.23234 {{ value|floatformat:3 }} 34.232 length 返回字符串或列表的长度 length_is 判断字符串或列表长度是否指定的值,相等返回True {{ value|length_is:"4" }} lower 字符串中的字母都变小写{{ value|lower }} upper 字符串中的字母都变大写{{ value|upper }} safe 关闭变量的自动转义,使html标签生效{{ value|safe }} title 标题化,首字母大写 {{ value|title }} -xss(跨域脚本攻击)

date和time过滤器格式:

过滤器的例子:

关于自动转义

什么是自动转义?

自动转义是将变量的一些特殊字符,比如左箭头(<)、右箭头(>)转义成html代码,这样做的目的是为了处理一些不安全的变量。

<:转义成 & l t;

大于号:转义成& g t;

‘:转义成& # 3 9;

“:转义成& q u o t;

&:转义成& a m p;

xss(跨域脚本攻击)

{{|safe}}取消转义

4.静态文件

静态文件目录:

在项目目录下创建static的目录, 为了区分开各种类型的文件分别创建css,image,js的目录.

静态文件的配置:

在settings.py文件中添加STATICFILES_DIRS

设置静态文件目录路径,同templates。

创建静态文件:

1.创建文件/static/js/myjs.js

2.创建文件/static/css/mystyle.css

3.创建文件/static/image/myimage.jpg

##存入图片

-css -js -图片 -1. 路径配置

- STATICFILES_DIRS
- STATIC_URL
-2. 静态文件的引入
-1. 硬编码 通过 STATIC_URL
-2. 模板标签

STATIC_URL='/static/'设置目录要加上/.

Django框架基础知识03-模板变量及模板过滤器的更多相关文章

  1. Django框架基础知识04-模板标签与模板继承

    1.常用的模板标签 -作用是什么? -常用标签 总结:语法 {% tag %} {% endtag %} {% tag 参数 参数 %} 2.模板的继承与引用 -引用 include标签 -继承 ex ...

  2. Django框架基础知识05-自定义模板标签与过滤器

    根据一定规则,自己定义出符合需求功能的.用在任何你有需求的地方,因为内置的满足不了我们的需求,不同的东西有不同的定义规则 目前最最重要的就是HOW 一 文件路径配置: templates 存放自定义 ...

  3. Django框架基础知识12-中间件及上下文处理器

    Django中间件(Middleware) 是一个轻量级.底层的“插件”系统,可以介入Django的请求和响应处理过程,修改Django的输入或输出. django 中的中间件(middleware) ...

  4. Django框架基础知识02-路由及渲染

    1.URL(Uniform Resoure Locator)统一资源定位符是对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址.互联网上的每个文件都有一个唯一的URL ...

  5. Django框架基础知识01-配置环境

    Django框架 Django是个怎样的东西呢? Web应用框架----Django  http服务器:用来接受用户请求,并将请求转发给web应用框架进行处理. Web应用框架处理完以后再发送给htt ...

  6. Django框架基础知识08-表关联对象及多表查询

    1.自定义主键字段的创建 AutoFiled(pirmary_key=True) # 一般不会自定义,int类型,自增长 一般不自定义主键. 2.order_by asc desc from djan ...

  7. Django框架基础知识14-类视图

    MTV view视图 wsgi函数 def index(request): .... return HttpResponse() 特定的HTTP方法.get,post可以定义单独的方法 继承,多继承, ...

  8. Django框架基础知识13-auth系统

    我们昨天登录admin时创建的用户信息是存放在哪里了呢? auth系统的数据表: 从表的名称我们就能看出, auth_user,auth_group,auth_permission分别存放了用户,用户 ...

  9. Django框架基础知识11-会话状态保持及表单

    浏览器存储cookie的方式不太安全,那有没有更好些的来存储登入状态的方式呢??? 状态保持----cookie和session: 状态保持: 1.http协议是无状态的:每次请求都是一次新的请求,不 ...

随机推荐

  1. 找不到javax.servlet.Filter的类文件

    在这里我是用IDEA来开发的,Tomcat用的maven插件 原因:没有相应在jar包 解决:导入相应在jar的依赖,在pom文件中添加 <dependency> <groupId& ...

  2. 多线程 synchronized锁定当前对象

    synchronized(this) 和synchronized一样,都是锁定当前对象. public class Task { synchronized public void otherMetho ...

  3. [BZOJ5120]无限之环

    Description 曾经有一款流行的游戏,叫做InfinityLoop,先来简单的介绍一下这个游戏: 游戏在一个n×m的网格状棋盘上进行,其中有些小方格中会有水管,水管可能在方格某些方向的边界的中 ...

  4. PHP函数技巧篇

    可变参数 Php提供3个函数用于检索在函数中所传递的参数. $array = func_get_args(); //返回一个提供给函数的所有参数的数组 $count = func_num_args() ...

  5. UVa 1218 Perfect Service 完美的服务

    ***状态设计值得一看dp[u][0]表示u是服务器(以下v均指任意u的子结点,son指u的所有子结点)ap[u][0]=sum{dp[v][1]}+1//错误,服务器是可以和其他服务器相邻的dp[u ...

  6. 学习JavaScript数据结构与算法 (二)

    学习JavaScript数据结构与算法 的笔记 包含第四章队列, 第五章链表 本人所有文章首发在博客园: http://www.cnblogs.com/zhangrunhao/ 04队列 实现基本队列 ...

  7. 1-8继承extends

    什么是继承? 继承是面向对象三大特征之一.java中的继承描述的是两个类之间的关系,被继承的类称为父类,继承的类称为子类,使用extends关键字来表示.在java语言里面只支持单继承,即一个类只能有 ...

  8. web 另类方法实现“另存为”功能

    HTML5 的 FileReader 带给我们很强大的文件只读访问能力,可是在 HTML5 新增的 JS 中却没有发现有方便的另存到本地文件的相关 API,以往的办法要么调用浏览器的 save as ...

  9. python_13(前端—cs)

    第1章 前端三大标准:1.1 三大标准介绍 1.2 html标签一览表 第2章 结构标准 html 2.1 html结构 2.2 html常用标签 2.2.1 h1-h6 2.2.2 span 2.2 ...

  10. 【转】一篇文章,教你学会Git

    一篇文章,教你学会Git 在日常工作中,经常会用到Git操作.但是对于新人来讲,刚上来对Git很陌生,操作起来也很懵逼.本篇文章主要针对刚开始接触Git的新人,理解Git的基本原理,掌握常用的一些命令 ...