请关注公众号:自动化测试实战

上一节我们介绍了模板的基本使用方法,现在我们想一个问题,如果把index.html放到template文件夹下面的文件夹该怎么办呢?其实很容易,当文件夹结构如下图所示时:

我们只需要修改render_template的值即可,代码如下:

如果你在pycharm里面修改,pycharm会自动帮你改应用的代码的。

现在来想另一个问题,就是既然模板可以复用,那么它里面的内容肯定不可能写死对吧,如果写成固定值那每个页面的内容都成了一样的了,所以模板就需要写成变量的形式,通过给变量传值来修改模板对应的内容。在flask中,变量的写法是{{ 变量值 }}这种两个大括号(又叫大胡须)的形式。
现在我们在主文件给一段字符串,然后想把它应用到.html模板中,我们该怎门办呢?根据render_template的源码知道它还有第二个参数——关键字参数**context,所以我们知道只需要给它传一个关键字参数即可,加上刚才的大胡须传递变量,我们来看一段代码:

templateDemo.py文件

# coding: utf-8

from flask import Flask, render_templateapp = Flask(__name__)  # type: Flaskapp.debug = True

@app.route('/')def hello_world():    title = u'首页内容'    return render_template('post/index.html', title=title)

if __name__ == '__main__':    app.run()

index.html文件

<!DOCTYPE html><html lang="en">    <head>        <meta charset="UTF-8">        <title>这里是title</title>    </head>    <body>        <h1>{{ title }}</h1>

    </body></html>

现在来执行代码,然后去页面查看:

我们看到title的内容已经在页面上显示出来了。

这是模板引用变量的最简单的一个例子。

现在我们来渲染一个字典(就是传值为字典,专业术语叫渲染,记住了):

# coding: utf-8

from flask import Flask, render_templateapp = Flask(__name__)  # type: Flaskapp.debug = True

@app.route('/')def hello_world():    title = {"name": "Warren",             "age": 18,             "gender": "male"}

    return render_template('post/index.html', title=title)

if __name__ == '__main__':    app.run()

执行代码后看到页面直接显示了字典title的内容:

如果我们现在只想取字典里name的值呢?那么我只需要修改index.html里面的内容即可:
index.html文件

<!DOCTYPE html>

<html lang="en"><head>    <meta charset="UTF-8">    <title>这里是title</title>

</head><body>    <h1>{{ title.name }}</h1>

</body></html>

可以看到,取值的方式就是title.name即可。

请关注公众号:自动化测试实战

转载于:https://www.cnblogs.com/captainmeng/p/8692937.html

flask第十八篇——模板【2】相关推荐

  1. flask第二十四篇——模板【6】自定义过滤器

    请关注孟船长的公众号:自动化测试实战 大家想了解其他过滤器可以参考这里: http://jinja.pocoo.org/docs/dev/templates/#builtin-filters ---- ...

  2. 2021年安全生产工作总结及2022年思路计划(二十八篇)PPTX(附下载)

    摘要:2021年安全生产工作总结及2022年思路计划(二十八篇) 公众号:安全生产星球

  3. 实习日志_实习律师实习日志第十八篇(连载30篇)

    提供实习律师实习日记相关的文章资讯,希望我的分享能让您感到满意! 这个月接触最多的是人身损害赔偿的一些案件,交通事故.工伤的一些案件最多.起初,以为这些案件就是走走法律流程便可了事,最简单不过,可当完 ...

  4. 第六十八篇:从ADAS到自动驾驶(一):自动驾驶发展及分级

    作者:liaojiacai     邮箱: ljc_v2x_adas@foxmail.com 从ADAS到自动驾驶(一):自动驾驶的发展及分级 从今天起,我将根据自己所接触的ADAS和无人驾驶技术,来 ...

  5. 第十八篇:Question Answering问答系统

    目录 介绍 事实问题 非事实问题 为什么我们关注 NLP 中的事实问题? 2 种关键方法 大纲 IR-based QA 基于 IR 的 事实(Factoid) QA:TREC-QA 问题处理 答案类型 ...

  6. WPF效果第一百七十八篇ItemsControl旋转

    在前面分享的几篇中咱已经玩耍了Popup.ListBox多选.Grid动态分.RadioButton模板.控件的拖放效果.控件的置顶和置底.控件的锁定.自定义Window样式.动画效果.Expande ...

  7. “约见”面试官系列之常见面试题之第八十八篇之什么是vue生命周期(建议收藏)

    我们知道vue是一个构建数据驱动的 web 界面的渐进式框架,那么vue生命周期是什么呢?本篇文章就给大家来介绍一下vue生命周期的内容,希望可以帮助到有需要的朋友. vue生命周期是什么? Vue生 ...

  8. 【手写 Vue2.x 源码】第十八篇 - 根据 render 函数,生成 vnode

    一,前言 上篇,介绍了 render 函数的生成,主要涉及以下两点: 使用 with 对生成的 code 进行一次包装 将包装后的完整 code 字符串,通过 new Function 输出为 ren ...

  9. 【第十八篇】商城系统-订单中心设计解决方案

    订单模块 一.资源整合   我们需要把相关的静态资源拷贝到nginx,然后动态模板文件拷贝到order项目的templates目录下,然后调整资源的路径.在网关中设置对应的路由即可. 二.整合Spri ...

最新文章

  1. awk: (FILENAME=- FNR=1) 致命错误: 试图访问字段 -2
  2. 四十六、获得SD卡的大小以及内部的文件信息
  3. Java基本sql_常用sql
  4. 成长 | 《大厂晋升指南》学习总结(中)
  5. Ocelot简易教程(三)之主要特性及路由详解
  6. 团队开发框架(Developement Structure for Team),内容列表及整理计划
  7. java map转string_【库学科技】32道常见的Java基础面试题
  8. pycharm镜像源_pycharm安装第三方库
  9. VGA接口一根针折了
  10. 外键列到底要建在哪里?
  11. MAC编译jogl/gluegen很顺利
  12. JCreator中不能引入servlet包的解决办法
  13. 低频声音功率放大器电子设计报告
  14. 红外倒车雷达原理图_超声波倒车雷达电路图及原理分析
  15. 20种在学习编程的同时也可以在线赚钱的方法
  16. 爬虫使用代理socks
  17. 5、passcode
  18. 清华邓俊辉教授 数据结构算法 课程内容
  19. web学习-html(2)
  20. 关于无迹卡尔曼滤波(UKF)的权重

热门文章

  1. 测试你的前端代码 - part3(端到端测试)
  2. Jersey Restful Application with tomcat
  3. 老鼠之Atlas之旅(一):Atlas官方站点
  4. Yii2中你可能忽略但很有用的两个方法batcheach
  5. js代码实现购物车效果
  6. 2018区块链生存指南:要做飞行的猪、摔不坏的弹球、未来的种子
  7. ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes怎么处理
  8. 数据库访问的弹性化---WebLogic和Oracle RAC的整合:Active GridLink
  9. C#线程系列讲座(3):线程池和文件下载服务器
  10. ActiveMQ简单使用介绍