Flask框架学习笔记8-模板以及过滤器的使用

本文介绍了如何在Flask项目中使用Jinja2模板引擎,讲解了Jinja2的特点,如沙箱执行模式和自动HTML转义。同时,文章详细阐述了禁用跨域攻击系统的方法,以及如何自定义过滤器md来展示Markdown内容。通过页面传入方法读取并展示MD文件,展示了模板和过滤器的高效配合。
摘要由CSDN通过智能技术生成

之前我们已经完成了flask项目跳转至我们自定义的页面,但是我们发现页面需要自己创建。在开发过程中,页面少的话还无所谓,一旦页面多了的话,那将会耗费很大的一部分开发时间,所以想要写很少的代码量,实现很多的页面,那就需要使用模板了。

一、jinjia2简介

flask框架是自带jinjia2模板引擎的,那什么是jinjia2呢?

Jinja2是基于python的模板引擎,功能比较类似于于PHP的smarty,J2ee的Freemarker和velocity。 它能完全支持unicode,并具有集成的沙箱执行环境,应用广泛。jinja2使用BSD授权。

jinjia2简介:

Jinja2是Python下一个被广泛应用的模版引擎,他的设计思想来源于Django的模板引擎,并扩展了其语法和一系列强大的功能。其中最显著的一个是增加了沙箱执行功能和可选的自动转义功能,这对大多应用的安全性来说是非常重要的。
他基于unicode并能在python2.4之后的版本运行,包括python3。

jinjia2的特点:

沙箱执行模式,模板的每个部分都在引擎的监督之下执行,模板将会被明确地标记在白名单或黑名单内,这样对于那些不信任的模板也可以执行。
强大的自动HTML转义系统,可以有效地阻止跨站脚本攻击。
模板继承机制,此机制可以使得所有的模板都具有相似一致的布局,也方便了开发人员对模板的修改和管理。
高效的执行效率,Jinja2引擎在模板第一次加载时就把源码转换成Python字节码,加快模板执行时间。
可选的预编译模式。
调试系统融合了标准的Python的TrackBack系统,使得模板编译和运行期间的错误能及时被发现和调试。
语法可配置,可以重新配置Jinja2使得它更好地适应LaTeX或JavaScript的输出。
模板设计人员帮助手册,此手册指导设计人员更好地使用Jinja2引擎的各种方法。

二、禁用跨域攻击系统

在flask中默认使用的是jinjia2模板引擎,如果我们在后端传入的是一段html模板的语句,在前段浏览器是不会被识别出来的,会被当做字符串输出。
在这里插入图片描述
这是因为jinjia2在处理时进行了转译,目的是为了防止页面被进行跨站点攻击。当然我们也可以屏蔽掉改处理机制。

方法一:设置autoescape 的值为false
在模板中加入进行修改:
index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title></title>
    <link rel="stylesheet" href="{
    { url_for('static',filename='site.css') }}"/>
</head>
<body>

    {% autoescape false %}
    <h3>{
  { data }}</h3>
    {% endautoescape %}

    <nav>
        <a href="{
    { url_for('.services') }}"
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值