Django 学习第三天——模板变量及模板过滤器
一、模板路径的查找:
查找顺序:(现在哪找到就用那个)
首先在主目录的 setting.py 文件里的 TEMPLATES 中的 DIRS 里找;
其次如果 DIRS 中的 APP_DIRS : 'True' 的时候在 settings.py 中的 INSTALLED_APPS 里注册的 app 里找 templates;
静态页面:
不随着客户端的变化而变化;
动态页面:
内容随着时间或不同的用户变化而变化
二、模板变量使用规则:
1、语法:{{ 变量名 }}
2、命名由字母和数字及下划线组成,不能以下划线开头;不能有空格和标点符号
3、可以使用字典,方法,模板,函数,列表等
4、不要和 python 或 django 关键字重名
5、变量值可以时任何数据类型
注意:
1、如果 data 是一个字典,且有 items 这个键时 ,那么访问 data.items 时将会访问这个 key 名为 items 的值;当没有这个 items 作为键时,将会时使用 items 这个方法(将字典中的所有键值对以元祖形式列出);
2、点(.)在模板渲染时有特殊含义;变量名中点(.)表示查找;
3、如果结果是可调用的,则调用它时不带参数。调用结果成为模板的值;
4、渲染失败,返回 '' (空)
例:
app book/views.py文件:

/templates/book/indes.html文件:

三、过滤器(filter):
作用:对变量进行过滤;在真正渲染出来之前,过滤器会根据功能处理好变量,然后得出结果后在替换原来的变量展示出来
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 返回字符串或列表的长度 {{ value|length }}
length_is 判断字符串或列表长度是否指定的值,相等返回True {{ value|length_is:"4" }}
lower 字符串中的字母都变小写{{ value|lower }}
upper 字符串中的字母都变大写{{ value|upper }}
cut 剪切 {{ value|cut:" " }} —— 把字符串中所有空格去掉
title 标题化,首字母大写 {{ value|title }}
safe 关闭变量的自动转义,使html标签生效{{ value|safe }} ———— XSS: 跨域脚本攻击
注意:
使用参数的时候,冒号和参数之间不能有任何空格,一定要紧挨着

date 和 time 过滤器格式:

例:



关于自动转义:
自动转义是将变量的一些特殊字符,比如左右箭头(< >)转义成 html 代码,这样做的目的时为了处理一些不安全的变量
< —— 转义成 <
> —— 转义成 >
' —— 转义成 '
" —— 转义成 "
& —— 转义成 &
四、静态文件目录:
在项目目录下创建 static 的目录,为了区分开各种类型的文件分别创建 css,image,js 的目录;
配置:
在主目录的 settings.py 文件中添加 STATICFILES_DIRS 设置静态文件目录路径,同 templates
STATIC_URL = '/static/' 两个 / 都要加,静态文件的存放位置;自定义,可以自定义写(想些什么写什么)

引用:
第一种:
硬编码,通过 STATIC_URL 来引入
<link rel="stylesheet" href="/STATIC_URL定义的值/找到对应的文件/">
第二种:
通过模板标签
在要使用的 html 文件上面加上 {% load static %}
<link rel="stylesheet" href="{% static '所需文件的相对路径' %}">

Django 学习第三天——模板变量及模板过滤器的更多相关文章
- Django学习系列12:把Python变量传入模板中渲染
		
从视图的Python代码中把变量传入HTML模板. 模板中使用哪种句法引入Python对象,要使用的符号{{...}},它会以字符串的形式显示对象: <html> <head> ...
 - Django框架基础知识03-模板变量及模板过滤器
		
模板变量及模板过滤器. 1.模板路径的查找 -查找顺序 1.尝试,在app目录下存放模板. -两种方案 1.app项目文件夹下存放. 2.templates文件夹下分类存放. 首先查找项目settin ...
 - Django-2- 模板路径查找,模板变量,模板过滤器,静态文件引用
		
模板路径查找 路径配置 2. templates模板查找有两种方式 2.1 - 在APP目录下创建templates文件夹,在文件夹下创建模板 2.2 - 在项目根目录下创建templates文件夹, ...
 - Django学习(三)---Models(ORM框架)
		
1) Django 中Models是与数据库相关的,与数据库相关的代码一般写在 models.py中,Django 支持 sqlite3, MySQL, PostgreSQL等数据库,只需要在sett ...
 - Java学习笔记三:Java的变量、常量、变量的类型及使用规则
		
Java的变量.常量.变量的类型及使用规则 每一种语言都有一些具有特殊用途的词,Java也不例外,它们被称为关键字.关键字对 Java 的编译器有着特殊的意义. 一:Java中的关键字: 注:Java ...
 - Django(十五)模板详解:模板标签、过滤器、模板注释、模板继承、html转义
		
一.模板的基础配置及使用 [参考]https://docs.djangoproject.com/zh-hans/3.0/topics/templates/ 作为Web框架,Django提供了模板,用于 ...
 - Django 学习笔记(四)模板变量
		
关于Django模板变量官方网址:https://docs.djangoproject.com/en/1.11/ref/templates/builtins/ 1.传入普通变量 在hello/Hell ...
 - Django 学习笔记(三)模板导入
		
本章内容是将一个html网页放进模板中,并运行服务器将其展现出来. 平台:windows平台下Liunx子系统 目前的目录: hello ├── manage.py ├── hello │ ├── _ ...
 - The Definitive Guide To Django 2 学习笔记(七) 第四章 模板 (三)使用模板系统
		
接下来,我们开始学习如何使用模板系统,但我们并不和前面说的View相结合,我们的这里的目的是展示模板系统是如何独立于Django框架运行的.下面是在pyhon代码中使用Django模板系统的基础例子: ...
 
随机推荐
- Confluence 6 管理站点模板
			
模板是一个预先定义的页面,这个预先定义的页面可以在创建新页面的时候预先载入.模板可以由用户创建也可以通过蓝图提供.请查看 Page Templates 和 Blueprints 页面中的内容. 管理员 ...
 - Microsoft Graph 概述
			
这个系列文章 已经进行到了实质的阶段,继上一篇介绍了如何搭建Office 365开发环境之后,我会通过这篇文章给大家介绍一个非常重要的概念:Microsoft Graph.它之所以重要,首先是因为它是 ...
 - LeetCode(77):组合
			
Medium! 题目描述: 给定两个整数 n 和 k,返回 1 ... n 中所有可能的 k 个数的组合. 示例: 输入: n = 4, k = 2 输出: [ [2,4], [3,4], [2,3] ...
 - 小学生都看得懂的C语言入门(3): 数组与函数
			
#include <stdio.h> int main() { int x; ; ; scanf("%d",&x){ sum+=x; cnt++; scanf( ...
 - cf1107e  uva10559区间dp升维
			
/* 区间dp,为什么要升维? 因为若用dp[l][r]表示消去dp[l][r]的最大的分,那么显然状态转移方程dp[l][r]=max{dp[l+1][k-1]+(len[l]+len[k])^2+ ...
 - Nginx详解五:Nginx基础篇之HTTP请求
			
http请求 如今的http请求已经不是每一次请求都进行一次三次握手,可以在请求与相应之后,客户端和服务端不断的发送FIN和ACK包来保持连接的状态,即:长连接 HTTP请求建立在一次TCP连接基础上 ...
 - requests中get和post传参
			
get请求 get(url, params=None, **kwargs) requests实现get请求传参的两种方式 方式一: import requests url = 'http://www. ...
 - scss文件使用笔记
			
1.编写兼容性代码 例如透明度,兼容IE @mixin mOpacity($o){ opacity:$o/100; filter:alpha(opacity=$o); } //引用 .box{ @in ...
 - 【C++ Primer 第13章】2. 拷贝控制和资源管理
			
拷贝控制和资源管理 • 类的行为像一个值.意味着它应该有自己的状态,当我们拷贝一个像值得对象时,副本和原对象是完全独立的,改变副本不会对原对象有任何影响. • 行为像指针的类则共享状态.当我们拷贝一个 ...
 - ***在Linux环境下mysql的root密码忘记解决方法(三种)-推荐第三种
			
MySQL密码的恢复方法之一 1.首先确认服务器出于安全的状态,也就是没有人能够任意地连接MySQL数据库. 因为在重新设置MySQL的root密码的期间,MySQL数据库完全出于没有密码保护的 状态 ...