1.2模板templates
一.模板使用
1. 配置模板目录
如果命令行创建的项目,需要手动配置模板文件目录,如果是Pycharm创建的项目,则无需配置
- 在项目根目录下创建模板目录,比如叫
templates,后续开发模板文件会放在此目录下 在项目的配置文件
settings.py文件中,进行模板目录的配置,如下:

2. 定义模板文件
在templates目录中新建一个模板文件,如show.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<body>
<!-- 显示模板变量 -->
<h1>{我的名字是:{ name }}</h1> </body>
</html>
3. 模板渲染
方法一:通过render函数
from django.shortcuts import render def index(request):
data_dict = {'name': 'django' }
# 参数1:请求对象
# 参数2:模块路径
# 参数3:字典数据
return render(request, 'index.html', data_dict)
方法二:通过Template对象的render方法
from django.template import loader def index(request):
# 获取模板对象
template = loader.get_template('index.html') # type: Template
# 渲染得到字符串
data_dict = {'name': 'django' }
html_str = template.render(data_dict)
# 响应请求
return HttpResponse(html_str)
二.模板的语法
- 模板变量
- 模板语句
- 过滤器
- 注释
- 模板继承
1. 模板变量
变量名必须由字母、数字、下划线(不能以下划线开头)和点组成,语法如下:
{{ 变量 }}
模板变量可以使python的内建类型,也可以是对象。
2. 模板语句
1)for循环:
{% for item in 列表 %}
{{forloop.counter}} <1-- 表示当前是第几次循环,从1开始 -->
{{forloop.counter0}} <!-- 表示当前是第几次循环,从0开始 -->
{% empty %} 查下
列表为空或不存在时执行此逻辑
{% endfor %}
2)if条件:
{% if ... %}
逻辑1
{% elif ... %}
逻辑2
{% else %}
逻辑3
{% endif %}
比较运算符如下:
==
!=
<
>
<=
>=
布尔运算符如下:
and
or
not
注意:运算符左右两侧必须有空格。
{% if a == 1 %} # 正确
{% if a==1 %} # 错误
3. 过滤器
语法如下:
- 使用管道符号|来应用过滤器,用于进行计算、转换操作,可以使用在变量、标签中。
如果过滤器需要参数,则使用冒号:传递参数。
变量|过滤器:参数{%if forloop.counter|divisibleby:2 %}列举几个如下:
- safe,禁用html转义(显示html标签样式,而不是字符串){{content|safe}}控制一个
- {% autoescape off%} {{content}} {% endautoescape %} 关闭转义 可以控制多个
- length,长度,返回字符串包含字符的个数,或列表、元组、字典的元素个数。
default,默认值,如果变量不存在时则返回默认值。
data|default:'默认值'
date,日期,用于对日期类型的值进行字符串格式化,常用的格式化字符如下:
- Y表示年,格式为4位,y表示两位的年。
- m表示月,格式为01,02,12等。
- d表示日, 格式为01,02等。
- j表示日,格式为1,2等。
- H表示时,24进制,h表示12进制的时。
- i表示分,为0-59。
- s表示秒,为0-59。
value|date:"Y年m月j日 H时i分s秒"
4. 注释
1)单行注释语法如下:
{#...#}
2)多行注释使用comment标签,语法如下:
{% comment %}
...
{% endcomment %}
5. 模板继承
- 模板继承和类的继承含义是一样的
- 可以使用模板继承来复用父模板,提高代码的复用性,减轻开发人员的工作量。
- 可以通过定义
block,实现子模板对父模块内容的重写
父模板
如果发现在多个模板中某些内容相同,那就可以使用block标签把这段内容定义到父模板中。
{% block 块名称 %}
预留区域,可以编写默认内容,也可以没有默认内容
{% endblock %}
子模板
使用
extends标签继承父模板,写在子模板文件的第一行。{% extends "父模板路径" %}
对有需要的
block进行重写:- 不用重写父模版中的所有block,如果子模版没有重写,则使用父模版定义的默认值。
可以使用
block.super来包含父模板的块中定义的内容,如下{% block 名称 %}
子模板的内容
{{ block.super }} 显示父模板中block的内容
{% endblock %}
django文档参考
<https://docs.djangoproject.com/zh-hans/2.1/ref/templates/builtins/>
django过滤器大全
<https://www.cnblogs.com/Deaseyy/p/10859893.html>
1.2模板templates的更多相关文章
- Django学习总结之模板templates
- django模板: templates - 模板分为两个过程: 1, 加载 : loader.get_template('xxx.html') 返回值是一个template对象 2, 渲染 : t ...
- 【Django笔记1】-视图(views)与模板(templates)
视图(views)与模板(templates) 1,视图(views) 将接收到的数据赋值给模板(渲染),再传递给浏览器.HTML代码可以直接放在views.py(文件名可任意更换),也可以放在t ...
- juqery模板 Templates
现在已经有了许多JavaScript的解决方案模板,从这方面说,标准化的模板解决方案必然是大势所趋.在本节中,我们向你简要描述四个最流行最有趣的模板.现有的模板解决方案能解决什么?那些特色在jQuer ...
- Django学习(二)---使用模板Templates
学会使用渲染模板的方法来显示html内容. 一.Templates是什么: HTML文件 使用了Django模板语言(Django Tamplate Language DTL) 可以使用第三方模板 二 ...
- C++模板(Templates)
模板(template)是泛型编程的基础,"泛型"的含义就是没有不依赖具体的数据类型.模板的引入是为了创建一般性的类(模板类)或者函数(模板函数).典型的容器比如迭代器/算法等是泛 ...
- python测试开发django-5.模板templates
前言 html是一个静态的语言,里面没法传一些动态参数,也就是一个写死的html页面.如果想实现在一个固定的html样式,传入不同的参数,这就可以用django的模板传参来解决. 模板参数 先在hel ...
- AS 代码模板 文件模板 Templates MD
修改 File and Code Templates Settings –> Editor –>[File and Code Templates] 或者在右键new时选择子菜单[Edite ...
- django学习-6.模板templates
1.前言 首先,我们要知道html是一门静态语言,里面没法传一些动态参数,也就是一个写死的html页面. 那么,如果我们想实现在一个html页面里传入不同的参数对应的参数值,这就可以用django框架 ...
- 模板templates的使用
目录 模板及其渲染 模板查找路径 DTL模板语法 常用的模板标签 DTL常用过滤器 模块结构优化 加载静态文件 模板及其渲染 视图函数只是直接返回文本,而在实际生产环境中其实很少这样用,因为实际的页面 ...
随机推荐
- 5. xadmin 后台搭建
要维护他人产权,就不喽了,直接飞机 Django1.11.11使用xadmin的方法(一: 快速安装篇):https://www.jianshu.com/p/bcb74595213e Django1. ...
- 剑指offer第二版-10.斐波那契数列
面试题10:斐波那契数列 题目要求: 求斐波那契数列的第n项的值.f(0)=0, f(1)=1, f(n)=f(n-1)+f(n-2) n>1 思路:使用循环从下往上计算数列. 考点:考察对递归 ...
- 别混淆了sizeof(数组名)和sizeof(指针)
我们在挨个儿输出一个数组中的元素时,最常用的就是用一个for循环来实现,简单了事.比如类似下面的代码片段: for(i = 0; i< length; i++) { printf("数 ...
- [Spring+SpringMVC+Mybatis]框架学习笔记(六):事务
第7讲 事务 7.1 事务的概念 事务是一系列作为一个逻辑单元来执行的操作集合. 它是数据库维护数据一致性的单位,它讲数据库从一个一致状态,转变为新的另外一个一致状态.说的简单一点就是:如果一组处理步 ...
- Lake Counting-C++
Description Due to recent rains, water has pooled in various places in Farmer John's field, which is ...
- SSAS Tabular 表格模型建模(关系)及部署
一.表格建模(SSAS 表格) 表格模型是 Analysis Services 中的内存中数据库. 使用最先进的压缩算法和多线程查询处理器,xVelocity 内存中分析引擎 (VertiPaq) ...
- win10修改桌面图标之间的距离
操作方法01首先用Win+R组合键打开运行界面,在界面的输入框中输入regedit命令,打开注册表. 02在打开的注册表界面中我们找到HKEY_Current_User下的Control Panel文 ...
- [leetcode] 406. Queue Reconstruction by Height (medium)
原题 思路: 一开始完全没有思路..看了别人的思路才解出来. 先按照他们的高度从高到低(因为我后面用的从前往后遍历插入,当然也可以从低到高)排序,如果高度一样,那么按照k值从小到大排序. 排完序后我们 ...
- Java中常见的异常类型
一. Java中常见的异常类 异常类 说明 ClassCastException 类型准换异常 ClassNotFoundException 未找到相应类异常 ArithmeticException ...
- PHP中的$_GET变量
定义 在 PHP 中,预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值. $_GET 变量 预定义的 $_GET 变量用于收集来自 method=&q ...