Python Flask框架基础(三)模板

一个完整HTML页面往往需要几十甚至几百行代码,不可能都写在视图函数中,程序的业务逻辑和表现逻辑要分离。正确的做法是将HTML代码存储在单独的模板文件中。模板引擎的作用就是读取并执行模板中的特殊语法标记,并根据传入的数据将变量替换为实际值,输出最终的HTML页面,这个过程称为渲染。Flask使用的默认模版引擎是Jinja2。

渲染模板就是执行模板中的代码,并传入所有在模板中使用的变量。渲染后的结果就是我们要返回给客户端的HTML响应。

创建模板

在templates目录下创建html文件watchlist.html,代码清单如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
    <title>{
  { user.username }}'s Watchlist</title>
</head>
<body>
<h2>{
  { user.username }}</h2>
{% if user.bio %}
    <i>{
  { user.bio }}</i>
{% else %}
    <i>This user has not provided a bio.</i>
{% endif %}
{# Below is the movie list (this is comment) #}
<h5>{
  { user.username }}'s Watchlist ({
  { movies|length }}):</h5>
<ul>
    {% for movie in movies %}
    <li>{
  { movie.name }} - {
  { movie.year }}</li>
    {% endfor %}
</ul>
</body>
</html>

模板中添加Python语句和表达式时,我们需要使用特定的定界符把他们标出来。Jinja2中常见的三种定界符:

(1) 语句
比如if判断、for循环:
{%.......%}

(2) 表达式
比如字符串、变量、函数调用等:
{ {.......}}

(3) 注释
{#.......#}

Jinja2允许在模板中使用大部分Python对象,比如字符串、列表、字典、元组、整型、浮点型、布尔值。它支持基本的运算符号(+、-、*、/等)、比较符号(==、!=等)、逻辑符号(and、or、not和括号)以及in、is、None等。

渲染模板

在视图函数中渲染模板时,并不直接使用Jinja2提供的函数,而是使用Flask提供的渲染函数render_template()。该函数第一个参数是模板文件相对于templates文件夹的路径,后面的参数是模板中使用的变量值。app.py代码清单如下:

from flask import Flask,render_template

app = Flask(__name__)

user = {
   
    'username': 'Grey Li',
    'bio': 'A boy who loves movies and music.',
}

movies = [
    {
   'name': 'My Neighbor Totoro', 'year': '1988'},
    {
   'name': 'Three Colours trilogy', 'year'
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值