render_template 网页模板
模板简单介绍:
视图函数:视图函数就是装饰器所装饰的方法,视图函数的主要作用是生成请求的响应,这是最简单的请求。实际上,视图函数有两个作用:处理业务逻辑和返回响应内容。在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本。本节学到的模板,它的作用即是承担视图函数的另一个作用,即返回响应内容。
模板其实是一个包含响应文本的文件,其中用占位符(变量)表示动态部分,告诉模板引擎其具体的值需要从使用的数据中获取,使用真实值替换变量,再返回最终得到的字符串,这个过程称为“渲染”,Flask是使用 Jinja2 这个模板引擎来渲染模板
Jinja2(参考概念)
两个概念:
Jinja2:是 Python 下一个被广泛应用的模板引擎,是由Python实现的模板语言,他的设计思想来源于 Django 的模板引擎,并扩展了其语法和一系列强大的功能,其是Flask内置的模板语言。
模板语言:是一种被设计来自动生成文档的简单文本格式,在模板语言中,一般都会把一些变量传给模板,替换模板的特定位置上预先定义好的占位变量名。
官方文档
渲染模版函数
Flask提供的 render_template 函数封装了该模板引擎
模板简单理解就是把前后的代码分离让开发者高效的开发,让代码结构清晰,耦合度降低
使用render_template:
网页模板需要flask内的render_template模块:
传参需要先定义好参数传入时render_template()内的第一个参数是html模板名后续加参数,传参时是赋值式 (在html内的标识)= (传入的变量名),也可以用**args,把数据以key value 形式传入字典把整个字典 **变量名传入 到html里直接调用key即可。
render_template 函数的第一个参数是模板的文件名,后面的参数都是键值对
{%逻辑运算%}有逻辑运算时必须有{%end%}结束比如:
{%if sum < 1%} | {%for i in sum%}
{% endif %} | {% endfor %}
html文件内注释可以使用{# 注释内容 #},也可以使用html内的<!-- 注释 -->注释,但是在逻辑运算时如果使用html内的注释会报错,所以建议常用flask内置注释方法 {# 注释内容 #}
PY文件
# -*- encoding: utf-8 -*-
# 网页模板需要导入render_template
from flask import Flask, render_template app = Flask(__name__) app.config.from_pyfile('config.ini') @app.route('/')
def index():
my_str = '你好世界'
my_int = 123
my_list = [1, 2, 3, 48, 93]
my_dict = {'name': '星宇', 'age': 19}
contect = {}
contect['my_shijei'] = my_str
contect['myint'] = 0
contect['mylist'] = [1, 2, 3, 48, 93]
contect['mydict'] = {'name': '牛星宇', 'age': 19}
# 使用render_template模块来渲染模板文件,通过第二个参数传递数据变量
# return render_template('day3.html', my_shijei=my_str, myint=my_int, mydict=my_dict, mylist=my_list)
# 通过**引用来将嵌套dict直接传递给模板
return render_template('day3.html', **contect) if __name__ == "__main__":
app.run()
HTML文件:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<meta http-equiv="X-UA-Compatible" content="ie=edge" />
<title>flask网页模板的学习</title>
</head>
<body>
<div>这是我们第一个网页模板</div>
<br />
{# 这是注释,最基本的模板语法输出一个变量 #}
{{ my_shijei + "李毅囧" }}<br />
{# 模板语法可以以下标引用的方式输出list元素#}
{{ mylist[0]}}{{ mylist.1}}<br />
{#模板可以做简单的运算操作#}
{{ myint + 10 }} <br />
{# 模板可以通过调用key取value#}
{{ mydict["name"] }}{{ mydict.age }}
{#使用{%%}来定义简单的逻辑控制代码#}
{% if myint %}
整型存在
{% else %} 不存在
{#使用if判断,一定要有endif用来判断结束逻辑判断#}
{% endif %}
<ul>
{# 使用for循环来遍历list #} {% for itme in mylist %}
<li>{{ itme }}</li>
{% endfor %}
</ul>
{# 使用 if for 嵌套来实现单双行背景色#}
<table style="padding:5px">
{% for item in mylist %}
{#使用loop关键字可以调用循环的索引,用来判断下标单双数#}
{% if loop.index% 2 == 0 %}
<tr style="background-color:tomato">
<td style="border:1px solid black;">{{ item }}</td>
</tr>
{%else%}
<tr style="background-color:violet">
<td style="border:1px solid black;">{{ item }}</td>
</tr>
{% endif%} {% endfor %}
</table>
</body>
</html>
render_template 网页模板的更多相关文章
- Flask网页模板的入门
#网页模板需要导入render_template from flask import Flask,render_template 方法一: #使用render_template模块来渲染模板文件 ...
- 15款免费的 HTML5/CSS3 响应式网页模板
如果你想快速制作出一个优秀的网站,网站模板一定是必不可少的.网页设计师和开发人员也可以从网站模板入手,学习先进的布局方式和编码风格.下面这个列表为大家挑选了15款免费的 HTML5/CSS3 响应式网 ...
- 20款响应式的 HTML5 网页模板【免费下载】
下面的列表集合了20款响应式的 HTML5 网页模板,这些专业的模板能够让你的网站吸引很多的访客.除了好看的外观,HTML5 模板吸引大家的另一个原因是由于其响应性和流动性.赶紧来看看. 您可能感兴趣 ...
- 30余套系统模版|DIV+CSS网页模板|简洁大气系统模板
30余套系统模版|DIV+CSS网页模板|简洁大气系统模板.都是一些后台系统的模版,很适合开发一些管理系统,办公系统,网站后台系统等.使用很广泛,很实用的系统模版. 下载地址: 点击下载
- .net邮件发送实例 邮件内容为网页模板
.net邮件发送实例 邮件内容为网页模板 2009-07-03 09:31:01| 分类: .NET|字号 订阅 Encoding encoding = Encoding.GetEncod ...
- (转)dedecms网页模板编写
网页模板就是templets中的htm文件,所以编写模板就是要编写html.这篇文章不是关于标签的具体使用,而是对网页模板的一些理解.包括基本的标签语法,封面模板,列表模板和文档模板的关系. 一 关于 ...
- Play学习 - 体验网页模板
在经过无数个尝试后,最终用sbt把play所依赖的所有包都下载下来了,现在可以非常快速编译运行了.今天体验了下网页模板,觉得非常不错,在这里做个简单的介绍. 原文说明: A Play Scala te ...
- Django加载静态网页模板
Django加载静态网页模板 步骤: 第一步:在子系统blog根目录下新建模版目录templates,里面新建一个login.html <!DOCTYPE html> <html l ...
- 快速完成网页设计,10个顶尖响应式HTML5网页模板助你一臂之力
为了寻找一个优质的网页模板,网页设计师和开发者往往可能会花上大半天的时间.不过幸运的是,现在的网页设计师和开发人员已经开始共享HTML5,Bootstrap和CSS3中的免费网页模板资源.鉴于网站模板 ...
随机推荐
- docker遇到的问题以及docker 操作镜像的基本操作
root@localhost ~]# systemctl status docker.service ● docker.service - Docker Application Container E ...
- Spring拦截器(学习笔记)
SpringMVC 中的Interceptor 拦截请求是通过HandlerInterceptor 来实现的 在SpringMVC 中定义一个Interceptor 非常简单,主要有两种方式 第一种方 ...
- django学习自修第一天【简介】
1. MVC框架 MVC框架的核心思想是解耦,降低各功能之间的耦合性,方便重构代码 (1)低耦合,高内聚 (2)高可扩展性 (3)向后兼容 2. MVT框架 V(视图):核心处理,接受请求,调用模型获 ...
- 接触Struts2的ModelDriven<>接口
最近在学SSH框架,实战项目,用到了Struts2的ModelDriven<>接口,在这做一点记录 ModelDriven,意为模型驱动,意思是直接把实体类当成页面数据的收集对象 参考他人 ...
- QTP 自动化测试--点滴 获取datatable数值/dafault文件位置
0 设置default.xls文件位置 右键项目-settings-resources-datatable-选择 数据表的位置如图 心得:同一个项目-分成多个测试项目-这些测试项目可以共用同一张数据表 ...
- Lodop打印控件设置表格次页偏移
Lodop打印控件有很好的自动分页功能,超文本table表格一页装不下,自动分到第二页,第三页……通常表格之前还会有一些内容,比如标题,制表人名称日期什么的杂七杂八的东西,这种东西会占用一定的空间,这 ...
- LODOP用ADD_PRINT_IMAGE语句缩放打印图片
LODOP提高输出图片质量的方法:1.用ADD_PRINT_IMAGE语句打印图片,而且img元素的width和height属性要去掉或者设置足够大,这样就可以让下载引擎传给Lodop图片质量足够好; ...
- 设置和安装 BizTalk Server 2016 的必备组件
设置服务器,然后安装和配置软件必备组件. 加入本地管理员组 若要安装并配置 BizTalk Server,在本地计算机上使用管理员帐户登录到服务器. 向本地管理员组添加任何管理 BizTa ...
- 当页面是动态时 如果后台存储id可以通过查询后台方式获取对象;当后台没有存储时候 只有通过前端标记了 例如标记数量为10 我们根据传递过来的10循环取值
当页面是动态时 如果后台存储id可以通过查询后台方式获取对象;当后台没有存储时候 只有通过前端标记了 例如标记数量为10 我们根据传递过来的10循环取值
- 【数学建模】day01-线性规划问题
线性规划问题是在一组线性约束条件下,求线性目标函数最大/最小值的问题.这些约束条件有不等式约束.等式约束以及边界约束,这和中学讲的线性规划无异. 此类问题的MATLAB标准形式为: 其中,max问 ...