Flask框架——模板

1、Jinja2模板引擎

       Jinja2 是一个现代的、功能强大的 Python 模板引擎。它用于将模板文件(通常是 HTML 文件,但也可以是其他文本格式)与数据结合起来,生成最终的文本输出。在 Web 开发中,特别是使用 Flask 等 Python Web 框架时,Jinja2 可以帮助开发者将动态数据嵌入到静态的 HTML 页面中,从而创建出具有交互性和动态性的网页。

       下面创建一个模板的演示项目templateDemo,目录结构如下:

       创建一个index.html文件,它是一个最小的模板,说明了一些模板使用的基础。内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <title>My Webpage</title>
</head>
<body>
    <ul id="navigation">
        {% for item in navigation %}
           <li><a href="{
  
  {item.href}}">{
  
  {item.caption}}</a></li>
        {% endfor %}
    </ul>

    <h3>welcome</h3>
    {
  
  {a_variable}}
</body>
</html>

        这里有两种分隔符:{%...%}和{{...}}。前者用于执行诸如 for 循环语句或赋值的语句,后者用于把表达式的结果打印到模板上。
       Flask应用把变量传递到模板,变量中也可以有能访问的属性或元素。可以使用点“.”来访问变量的属性,作为替代,也可以使用所谓的“下标”语法“[]”。
       下面的两行效果是一样的:

{
  
  {foo.bar}}
{
  
  {foo['bar']}}

       如果变量或属性不存在,会返回一个未定义值。

       然后在app.py中加入以下的代码,用于渲染模板和向模板文件传递值。

from flask import Flask,render_template
app = Flask(_name_)

@app.route('/')
def index():
    navigation = [
        {
          'href':'#',
          'caption':'首页'
        },
        {
          'href':'#',
          'caption':'新闻'
        },
        {
           href':'#',
           'caption':'产品'
         },
         {
           'href':'#',
           'caption':'联系'
         },
]
a_variable ='欢迎光临本网站'
context = {'navigation': navigation,'a_variable':a_variable}
return render_template('index.html',**context)

       在代码中 navigation 是一个列表,里面存储了4个字典,用于模板中导航条的生成:a_variable 是一个字符串变量,用于显示一段欢迎词。将这两个变量分别用模板中定义的名字作为键,放到字典 context 中,在渲染模板时将 context一起传给模板。context 前面的**是将字典分解成函数的关键字参数的用法。运行程序后显示页面见图1-1。

1-1

 下面解释模板中常用的一些语法。
(1)过滤器
变量可以通过过滤器修改。过滤器与变量用管道符号“|”分隔,并且也可以用圆括号传递可选参数。多个过滤器可以链式调用,前一个过滤器的输出会被作后一个过滤器的输入。
例如:

{
  
  { name|striptags|title }}

过滤器会移除 name 中的所有HTML 标签并且改写标题样式的大小写
格式。
过滤器接受带圆括号的参数,如同函数调用。这个例子会把一个列表用逗号连接起来:

{
  
  {list|join(',')}}

(2)注释
要把模板中一行的部分注释掉,默认使用{#…#}注释语法。这在调试或添加给自己或其他模板设计者的信息时是有用的:

{# note: disabled template because we no longer use this
     {% for user in users %}
     ...
     {% endfor %}
#}

(3)控制结构
控制结构指的是所有那些可以控制程序流的语句—条件语句(比如ielif、else)、for 循环语句、宏和块。控制结构在默认语法中以{%.%}块的形式出现。
  1.for
遍历

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值