【三】Django模版的使用
作为Web框架,Django提供了模板,可以很便利的动态生成HTML
模版系统致力于表达外观,而不是程序逻辑
模板的设计实现了业务逻辑(view)与显示内容(template)的分离,一个视图可以使用任意一个模板,一个模板可以供多个视图使用
模板包含 HTML的静态部分、动态插入内容部分
Django模板语言,简写DTL,定义在django.template包中
创建简单的Template对象(以下 均在在控制台输入,而且要先输入 python3 manage.py shell)
from django.template import Template
t = Template('My name is {{name}}.')
print(t)
输入结果 是该对象的地址

渲染模版:本质是 通过一个字典,将key映射到 变量值,然后取到对应的value,最后通过render()方法传入,举例:
from django.template import Template, Context
t = Template('My name is {{name}}.')
c = Context({'name':'Lverson'})
t.render(c)
查看输入结果

为什么都要在控制台输入呢?为什么要先输入 python3 manage.py shell?
manage.py shell 命令有个关键点:在启动解释器之前,告诉 Django 使用哪个设置文件。
Django 的很多部分,包括模板系统,依赖于设置,如果不告诉 Django 使用 哪个设置,你就无法使用它们。
原理:Django 查找一个名为 DJANGO_SETTINGS_MODULE 的环境变量,其值是导入 settings.py 的路径。例如,DJANGO_SETTINGS_MODULE 的值 可能是 'mysite.settings'(假设 mysite 在 Python 路径中)。执行 python manage.py shell 命令时,它会为你设定 DJANGO_SETTINGS_MODULE。
在这些示例中必须使用 python manage.py shell,否则 Django 会 抛出异常。
如果是在 编译器中输入上述代码,需要加上两行代码,目的也是导入 setting.py的路径,但是依然会报错(百度查报错解决 还是需要在控制台输入)
from django.conf import settings settings.configure()
总结Django 模板系统的基本用法:
编写模板字符串
创建 Template 对象
创建 Context 对象
调用 render() 方法
同一个模版 使用同一个地址,所以可以传入不同的值、多次调用,举例 通过for循环依次读入name
注意for循环 内部要有缩行,否则不符合python规范,会报错

【基本的模版标签】
if/else
{% if %} 中 可以嵌套 {% if %} ,但是每个 {% if %} 都必须有配对的 {% endif %}。否则,Django 会抛出 TemplateSyntaxError 异常。
{% if today_is_weekend %}
<p>Welcome to the weekend!</p>
{% else %}
<p>Get back to work.</p>
{% endif %}
for
和python中的 for 循环一样,
<ul>
{% for athlete in athlete_list %}
<li>{{ athlete.name }}</li>
{% endfor %}
</ul>
ifequal/ifnotequal
变量之间做比较:比较 user 和 currentuser的值
{% ifequal user currentuser %}
<h1>Welcome!</h1>
{% endifequal %}
与字符串做比较:比较 section 和“sitenews”是有相同
{% ifequal section 'sitenews' %}
<h1>Site News</h1>
{% endifequal %}
注释:单行注释
{# This is a comment #}
注释:多行注释 {% comment %}
{% comment %}
This is a
multi-line comment.
{% endcomment %}
过滤器:模板过滤器是在显示变量之前调整变量值的简单方式
如下所示:代码先通过 lower 过滤器调整 {{ name }} 变量的值——把文本转换成小写,然后再显示。
{{ name|lower }}
下述示例获取列表中的第一个元素,然后将其转换成大写:
{{ my_list|first|upper }}
下面是几个最重要的过滤器。
addslashes:在反斜线、单引号和双引号前面添加一个反斜线。可用于转义字符串。例如:{{ val- ue|addslashes }}。
date:根据参数中的格式字符串格式化 date 或 datetime 对象。例如:{{ pub_date|date:"F j, Y" }}。格式字符串在附录 E 中说明。
length:返回值的长度。对列表来说,返回元素的数量。对字符串来说,返回字符的数量。如果变量 未定义,返回 0。
【三】Django模版的使用的更多相关文章
- django -- 模版语言之过滤器Filters和for循环
前戏 在前面写的图书管理系统中,我们对模版语言应该已经不陌生了,使用{{ }}包裹起来的就是模版语言,只需要记住两种就可以了 {{ 变量名 }} 变量相关的 {% %} ...
- Django模版语言 格式化显示 后台datatime()时间
Django模版语言 格式化显示 后台datatime()时间 场景描述:
- {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...
- Django模版语言的复用 1. include标签--模版导入 2.inclusion_tag自定义标签--模版导入 3.母版
include标签--模版导入 ''' 前提:项目中,往往会出现多个页面拥有一个或几个相同的页面版块,或是一个页面多个页面版块是相同的 如何运用:可以将多个样式标签的集合进行封装,对外提供版块的名字( ...
- django 模版 语法与使用
目录 django 模版语法与使用 django模板语言介绍 (摘自官方文档) 链接 什么是模板? 模板语句的 注释 变量 {{ 变量 }} 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值 ...
- Django 模版语法与使用
目录 Django 模版语法与使用 django模板语言介绍 (摘自官方文档) 链接 什么是模板? 模板语句的 注释 变量 {{ 变量 }} 点(.)在模板语言中有特殊的含义,用来获取对象的相应属性值 ...
- python Django 学习笔记(三)—— 模版的使用
模版基本介绍 模板是一个文本,用于分离文档的表现形式和内容. 模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签). 模板通常用于产生HTML,但是Django的模板也能产生任何 ...
- Django 笔记(三)模版路径 ~ 静态引用
1.模版路径: 在 settings,py 里的 TEMPLATES = [] 内添加一句代码拼接路径 'DIRS': [os.path.join(BASE_DIR, 'templates')] 有两 ...
- django第三课 模版
第一步 创建项目文件: django-admin.py startproject *** 第二步 进入该文件下创建文件夹templates,在该文件夹下创建thanks.html <!DOCTY ...
随机推荐
- JavaWeb_使用dom4j解析、生成XML文件
dom4j 官网 xml解析DOM文档对象模型(树形结构) DOM方式解析:把xml文档加载到内存形成树形结构,可以进行增删改的操作 Learn 使用dom4j解析文件"NewFile. ...
- C_clock()测试代码(循环)运行时间
clock() 传送门(百度百科) clock()是C/C++中的计时函数,而与其相关的数据类型是clock_t.在MSDN中,查得对clock函数定义如下: clock_t clock(voi ...
- 黑马lavarel教程---6、简单验证
黑马lavarel教程---6.简单验证 一.总结 一句话总结: 1.验证的最简单实例:$request的validate方法,验证通过可以继续进行,验证失败就重定向 2.中文提示可以用中文语言包 3 ...
- Git:本地项目与远程仓库的git/clone
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/qq_40197828/article/details/79283278 初识Git命令行将本地项 ...
- C++如何限制对象在堆上或栈上生成
1,限制类的对象只能生成在栈上 将 operator new 各种原型设为私有 #include <iostream> class OnlyOnStack { public: OnlyOn ...
- Linux搭建Samba共享服务器
实验要求: Samba文件共享服务配置与访问,配置访问用户以及相应权限. Tips:创建共享目录/test和/share,并且分别在/test下创建文件tf1(只读)tf2(读写) 在/share ...
- 函数参数<二>
1. 缺省参数 调用函数时,缺省参数的值如果没有传入,则被认为是默认值.下例会打印默认的age,如果age没有被传入: def printinfo( name, age = 35 ): # 打印任何传 ...
- Python OOP知识积累
目录 目录 前言 对象 类 面向对象 Python 面向对象编程三个基本特征 封装 继承 继承的作用 泛化与特化 实现继承的方式 多重继承 多态 方法多态 最后 前言 Python是一个功能非常强大的 ...
- Django配置Mysql数据库 (Pycharm)
Django配置MySQL数据库方法 一.settings.py文件中修改数据库配置为下面的内容: # Database # https://docs.djangoproject.com/en/2.0 ...
- 禁止在DBGrid中按delete删除记录
procedure TForm1.DBGrid1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState);begin if (ssctr ...