flask 的模板

Flask框架——模板 缺省情况下每种出错代码都会对应显示一个黑白的出错页面。注意 render_template()后面的404,这表示页面对应的出错代码是404,即页面不存在。默认情况下200表示:一切正常。在处理请求时,当Flask捕捉到一个异常时,它首先根据代码检索。如果该代码没有注册处理器,它会根据类的继承来查找,确定最合适的注册处理器。如果找不到已注册的处理器HTTPException 子类会显示一个关于代码的通用消息。没有代码的异常会被转换为一个通用的 500 内部服务器错误。 阅读详情

模板

个人拙见:所谓模板就是就是模具,模型;我们现实生活中经常碰到这种东西,就比如说厂家要批量生产一种钢化杯子,那么厂家肯定是先建模,设计出一个杯子的模型,并在此基础上做出模具,之后的生产,只需要将冶炼好的金属注入其中即可。我们学习的模板就类似于这种模具,只不过我们这里的是 web 模板。模板的诞生是为了将显示与数据分离,让前端工作人员专注表现设计,后台人员注重业务逻辑,同时简化代码的复杂程度。模板技术多种多样,但其本质是将模板文件和数据通过模板引擎生成最终的HTML代码。

渲染模板

所谓渲染模板,其实就是将数据插入到你的模板中,例如:

这是一个 user.html的文件

<h1>Hello, {{ name }}!</h1>

这是一个视图函数

from flask import Flask,render_template

@app.route('/user/<name>')
def user(name):
    return render_template('user.html',name=name)

flask 提供的 render_template 函数将 Jinja2 模板引擎集成到了程序中。render_template 函数第一个参数是模板的文件名。随后的参数都是键值对,表示模板中变量对应的真实值,注意一下,这个 render_template 查询响应文件是有位置的,默认的是在当前脚本的同级目录的templates目录下,如果不是这个目录下的文件是查询不到的,需另行修改。(如图所示,我的视图函数在 manage 中,而我的响应文件则保存在 templates 中)
这里写图片描述
拿上面这个例子来举例,首先在 user.html 文件中有一个变量name,user这个函数的形参中也有一个变量 name 在响应的时候会将 user.html 中的name替换为user函数所接收到的参数,打个比方,如果访问的是’/user/tom’,那么这个时候,user.html 的显示效果就是 Hello,tom!

变量

上面的例子提到了变量,在模板中使用 {{ name }} 结构表示一个变量,它是一种特殊的占位符,告诉模板引擎这个地方要被替换为渲染时传递过来的数据。Jinja2 能识别所有类型的变量,例如列表,字典,对象等,例子见下:

<p>A value from a dirctionary: {{ mydict['key'] }}.</p>
<p>A value from a list: {{ mylist[2] }}.</p>
<p>A value from a list,with a variable index: {{ mylist[myintvar] }}.</p>
<p>A value from an object's method: {{ myobj.somemethod() }}.</p>

还可以使用过滤器修改变量,过滤器名添加在变量名之后,与变量名之间用竖线分隔。如下,为模板以首字母大写形式显示变量 name 的值

hello, {{ name|capitalize }}

Jinja2的常用过滤器

过滤器名说明
safe渲染时不转义
capitalize把值的首字母转换成大写,其他字母转为小写
lower把值转换为小写
upper把值转换为大写
title把值中每个单词首字母转换成大写
trim把值的首尾空格去掉
striptags渲染之前,把值中所有的HTML标签都删掉

safe 过滤器需要注意一下,默认情况下,出于安全考虑,Jinja2 会转义所有的变量。如果需要显示变量中存储的源码时,就可以考虑使用 safe 过滤器了。但需要切记的是,千万不可在不可信的值上使用 safe 过滤器,例如用户在表单输入的文本等。

控制结构

Jinja2提供了多种控制结构,可用来改变模板的渲染流程。语法:{% 语句 %} 具体例子见下:
条件控制语句:

{% if user %}
    Hello ,{{ user }}!
{% else %}
    Hello ,Stranger!
{% endif %}

循环控制:

<ul>
    {% for comment iin comments %}
        <li>{{ comment }}</li>
    {% endfor %}
</ul>

Jinja2 还支持宏,类似于Python代码中的函数(本人还不是很理解,待续)

蓝图

一个功能完善的网站的目录结构是较为复杂的,这会给我们在处理响应的时候带来很大的麻烦,但有一个强大的工具让这个问题变的简单了,没错,就是蓝图。那么什么是蓝图呢?别着急,先看一个例子:
目录结构
这是本人的一个项目目录结构,当然这只是其中一部分(其他无关紧要),admin 是后台,home 为前台;他们响应的 html 文件分别存在于 templates 下的 admin 和 home 中,但是大家看一下我的视图函数。

admin的 views
这里写图片描述

home 的 views
这里写图片描述

大家发现了没,我给两个函数的路由是一样的,但明显前后端的路由不可能会一样(并不是本人写错了 / 笑哭),这是怎么实现的呢?这就是蓝图的功效,ta 可以把整个目录结构分而治之,而且各个部分直接不会相互产生干扰,赶紧来看一下怎么做到的吧(这里用 admin 的进行举例)。

  • 定义一个蓝图
    这里写图片描述
  • 注册蓝图
    这里写图片描述
  • 使用蓝图进行路由
    这里写图片描述

因为我们在注册的时候给了一个地址 url_prefix=”/admin” ,其实对后台进行请求时的路由地址应该是由两个地址拼接起来的 “ /admin/ ”。

未完待续

声明:本文乃是本人学习笔记,很多内容来自于 Grinberg 的《Flask web 开发》
FLASK模板介绍 1.0 模板 1.1 介绍 模板是WEB开发必备的模块,我们在渲染网页时,并不只是渲染一个纯文本字符串,而是渲染一个富文本的页面,这时候我们就需要模板,在flask中配套的模板是jinja2,jinja2的作者也是flask的作者。 1.2 flask渲染jinja2模板 要渲染一个模块,使用render_template方法 from flask import Flask,render_template app = Flask(__name__) @app.route('/boot/') def hel 阅读详情

相关推荐

Python flask 模板详解

Python flask 模板详解

鱼丸丶粗面 2914

flask-template:模板flask应用程序

烧瓶应用 该flask应用程序使用Python模块markdown从markdown文件生成html页面。 网站上的页面在目录pages中表示为markdown文件。 此目录中的每个markdown文件都将转换为目录templates的html文件。 Flask使用templates的html文件为每个端点提供服务。 ├── pages | ├── git_tutorial.md | ├── homepage.md 要将markdown文件从根目录转换为html,请执行以下操作: python scripts/markdown_to_html.py 部署方式 在Windows 10 x64计算机上对构建进行了测试。 应该使用Anaconda Prompt从该存储库的根目录运行命令。 命令在Anaconda Powershell Prompt上可能不起作用。 首先设置您的虚拟环境: p

Flask的Template:简介、基本语法、结构标签、宏定义、循环控制、过滤器

文章目录一.模板简介二.基本语法三.结构标签1.block2.extends(1)共享数据(2)共享结构3.include四.宏定义(macro)1.无参2.有参3.外文件引入五.循环控制六.过滤器1.简介2.具体实现 一.模板简介 通俗的来说,模板就是可以在html中来书写python代码,主要用来做数据展示的。 模板处理过程分为2个阶段:a. 加载  b.渲染 jinja2模板引擎:   a...

YFater的博客 1592

flask 模板Template

flask 模板 视图函数主要作用是生成请求的响应,包含两个作用:处理业务逻辑和返回响应内容。 模板作用:承担在大型项目内的返回响应内容的作用。 模板其实是一个包含响应文本的文件,其中用占位符(变量)表示动态部分,告诉模板引擎其具体的值需要从使用的数据中获取 使用真实值替换变量,再返回最终得到的字符串,这个过程称为“渲染” Flask是使用 Jinja2 这个模板引擎来渲染模板 1 jinja...

mophite的博客 2816

Flask-模板

Flask使用jinja2模板引擎来渲染html页面。1.需要 import render_template2.在视图函数中调用 render_template如jinja2 模板文件混合 html 语法与 jinja2 语法,使用分界符区分 html 语法与 jinja2 语法。有 5 种常见的分界符: 包含有 3 种类型的变量:字符串、列表、字典,它们会被替换为同名的 Python 变量 jinja2 模板中,使用 {% 语句 %} 包围的语法块称为语句,jinja2 支持类似于 Pyth

seanyang_的博客 1873

flask教程8:模板

flask模板讲解大全

总裁余(余登武)博客 2859

Flask模板

模板的基本用法:创建模板模板语法、渲染模板模板辅助工具:上下文、全局对象、过滤器、测试器、模板环境对象。模板组织结构:局部模板、宏、模板继承。模板进阶实践:空白控制、加载静态文件、消息闪现、自定义错误界面、JavaScript和CSS中的Jinja2。

恐龙让Lee的博客 1757

Flask框架】模板Template

flask教程

gecko 1061

Flask 模板渲染

模板是包含占位符的 HTML 文件。Flask 使用 Jinja2 模板引擎来处理模板渲染。模板渲染允许你将动态内容插入到 HTML 页面中,使得应用能够生成动态的网页内容。以下是关于 Flask 模板渲染的详细说明,包括如何创建和使用模板模板继承、控制结构等。templates。

zhao1iyong的博客 1827

Flask模板

Flask是一个使用Python编写的轻量级Web应用框架。在Flask中,模板是一个非常重要的组成部分,它用于生成HTML页面。Flask使用Jinja2模板引擎来处理模板

Flask Web 1036

带你认识 flask模板

在终端会话中设置环境变量FLASK_APP=microblog.py,然后执行flask run命令来运行应用。包含这个应用的Web服务启动之后,你可以通过在Web浏览器...

人生代码 ---- 公众号 760

Flask模板注入梳理

Flask模板注入,SSTI,梳理

2301_79806187的博客 1032

我爱FlaskFlask模板介绍!

黄色标注部分重点注意 这里写自定义目录标题==黄色标注部分重点注意==1. Flask模板简介注意:2. Flask模板传参==有问题可以在评论指正,欢迎讨论,谢谢大家!!== 1. Flask模板简介        •模板是一个web开发必备的,因为在渲染一个网页的时候,并不是只渲染一个纯文本字符串,而是需要渲染一个有富文本标签的页面,这时候就需要使用模板来简化渲染步骤      &nb

但行好事,莫问前程 1269

Flask项目模板指南

Flask项目模板指南 项目介绍 Flask项目模板 是一个基于Flask框架的起点项目,由xen维护。它旨在提供一个结构化的项目骨架,帮助开发者迅速开始新的Web应用开发。这个模板包含了基本的目录结构、配置文件以及一些常见的实用扩展集成,如数据库支持、日志管理等,使得开发者可以专注于业务逻辑的实现,而无需从零搭建环境。 项目快速启动 环境准备 首先,确保你的系统中安装了Python 3.6或...

gitblog_00428的博客 923

Flask中的模板的使用

简介:本文讲解Flask中的模板的使用。

jakelihua 1520

逻辑Flask——Flask模板

文章目录一、简单模板二、模板传参三、jinja2内置过滤器四、Jinja2自定义过滤器通用过滤器自定义时间过滤器六、控制语句1-if 语句2-for...in语句列表遍历字典获取当前遍历状态 前言: 学习模板的目的:用于前台展示 使用 vue 页面跳转由后台控制 前后端分离 前端 template 需要导入render_template 一、简单模板 from flask import Flask,render_template app = Flask(__name__) @app.route('/'

pick_ears的博客 3282
上一篇: Python 发送 multipart/form-data 数据
下一篇: Flask-SQLAlchemy
Slwhy
博客等级 码龄9年 77粉丝 55原创
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值