Python Flask入门之模板

 更新时间:2021年11月11日 17:21:05   作者:一只楚楚猫  
今天小编就为大家分享一篇Python Flask模板的入门教程,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧

在一般的 Web 程序里,访问一个地址通常会返回一个包含各类信息的 HTML 页面。因为我们的程序是动态的,页面中的某些信息需要根据不同的情况来进行调整,比如对登录和未登录用户显示不同的信息,所以页面需要在用户访问时根据程序逻辑动态生成。

我们把包含变量和运算逻辑的 HTML 或其他格式的文本叫做模板,执行这些变量替换和逻辑计算工作的过程被称为渲染(模板渲染引擎——Jinja2)。

按照默认的设置,Flask 会从程序实例所在模块同级目录的 templates 文件夹中寻找模板。

在这里插入图片描述

模板基本语法

在模板里,你需要添加特定的定界符将 Jinja2 语句和变量标记出来

下面是三种常用的定界符:

1、{{ … }} 用来标记变量。

2、{% … %} 用来标记语句,比如 if 语句,for 语句等。

3、{# … #} 用来写注释。

模板中使用的变量需要在渲染的时候传递进去。

编写主页模板

我们先在 templates 目录下创建一个 movie.html 文件,作为主页模板。主页需要显示电影条目列表和个人信息,代码如下所示:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>movie list</title>
</head>
<body>
    {# 使用 length 过滤器获取 movies 变量的长度 #}
    <p>{{ movies|length }} Titles</p>
    <ul>
        {% for movie in movies %} {# 迭代 movies 变量 #}
        <li>{{ movie.title }} - {{ movie.year }}</li> {# 等同于 movie['title'] #}
        {% endfor %} {# 使用 endfor 标签结束 for 语句 #}
    </ul>
</body>
</html>

为了方便对变量进行处理,Jinja2 提供了一些过滤器(和Vue.js框架中的过滤器有着异曲同工之妙),语法形式如下:
{{ 变量|过滤器 }}

左侧是变量,右侧是过滤器名。比如,上面的模板里使用 length 过滤器来获取movies 的长度,类似 Python 里的 len() 函数。

准备虚拟数据

为了模拟页面渲染,我们需要先创建一些虚拟数据,用来填充页面内容,其中template.py中定义虚拟数据。

movies = [{'title': '长津湖', 'year': '2021'},{'title': '送你一朵小红花', 'year': '2021'}]

渲染主页模板

使用 render_template() 函数可以把模板渲染出来,必须传入的参数为模板文件名(相对于 templates 根目录的文件路径),这里即 ‘movie.html' 。为了让模板正确渲染,我们还要把模板内部使用的变量通过关键字参数传入这个函数,如下所示:

from flask import Flask, render_template
 app = Flask(__name__)
 
@app.route('/')
def movie():
    return render_template('movie.html', movies=movies)
 
if __name__ == "__main__":
    app.run()

在传入 render_template() 函数的关键字参数中,左边的 movies 是模板中使用的变量名称,右边的movies 则是该变量指向的实际对象。这里传入模板的movies 是列表,但能够在模板里使用的不只这一种 Python数据结构,你也可以传入字符串、元组、字典、函数等。

render_template() 函数在调用时会识别并执行 “movie.html” 里所有的 Jinja2 语句,返回渲染好的模板内容。在返回的页面中,变量会被替换为实际的值(包括定界符),语句(及定界符)则会在执行后被移除(注释也会一并移除)。

在这里插入图片描述

总结

本篇文章就到这里了,希望能够给你带来帮助,也希望您能够多多关注脚本之家的更多内容!

相关文章

  • Python TypeError: ‘float‘ object is not subscriptable错误解决

    Python TypeError: ‘float‘ object is not subscriptable错

    发现问题写python的时候出现了这个错,所以想着给大家总结下,这篇文章主要给大家介绍了关于Python TypeError: ‘float‘ object is not subscriptable错误的解决办法,需要的朋友可以参考下
    2022-12-12
  • Python ord函数()案例详解

    Python ord函数()案例详解

    这篇文章主要介绍了Python ord函数()案例详解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-09-09
  • 一篇文章教会你PYcharm的用法

    一篇文章教会你PYcharm的用法

    这篇文章主要介绍了Pycharm新手使用教程(图文详解),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-08-08
  • 快速一键生成Python爬虫请求头

    快速一键生成Python爬虫请求头

    这篇文章主要介绍了如何快速一键生成Python爬虫请求头,帮助大家更好的理解和学习使用python爬虫,感兴趣的朋友可以了解下
    2021-03-03
  • Python使用Matplotlib实现创建动态图形

    Python使用Matplotlib实现创建动态图形

    动态图形是使可视化更具吸引力和用户吸引力的好方法,它帮助我们以有意义的方式展示数据可视化,本文将利用Matplotlib实现绘制一些常用动态图形,希望对大家有所帮助
    2024-02-02
  • Python手机号码归属地查询代码

    Python手机号码归属地查询代码

    这篇文章主要介绍了Python手机号码归属地查询代码的相关资料,需要的朋友可以参考下
    2016-05-05
  • Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)

    Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序)

    下面小编就为大家分享一篇Python中数组,列表:冒号的灵活用法介绍(np数组,列表倒序),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • R语言绘制条形图及分布密度图代码总结

    R语言绘制条形图及分布密度图代码总结

    这篇文章主要为大家介绍了R语言条形图及分布密度图代码总结,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • python自动化实现自动回复QQ消息

    python自动化实现自动回复QQ消息

    这篇文章主要介绍了python自动化实现自动回复QQ消息,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-03-03
  • 利用Python通过获取剪切板数据实现百度划词搜索功能

    利用Python通过获取剪切板数据实现百度划词搜索功能

    大家是不是嫌弃每次打开百度太麻烦?今天教大家利用Python通过获取剪切板数据实现百度划词搜索功能,用程序直接打开网页,需要的朋友可以参考下
    2021-06-06

最新评论