flask第十八篇——模板【2】
请关注公众号:自动化测试实战
上一节我们介绍了模板的基本使用方法,现在我们想一个问题,如果把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】相关推荐
- flask第二十四篇——模板【6】自定义过滤器
请关注孟船长的公众号:自动化测试实战 大家想了解其他过滤器可以参考这里: http://jinja.pocoo.org/docs/dev/templates/#builtin-filters ---- ...
- 2021年安全生产工作总结及2022年思路计划(二十八篇)PPTX(附下载)
摘要:2021年安全生产工作总结及2022年思路计划(二十八篇) 公众号:安全生产星球
- 实习日志_实习律师实习日志第十八篇(连载30篇)
提供实习律师实习日记相关的文章资讯,希望我的分享能让您感到满意! 这个月接触最多的是人身损害赔偿的一些案件,交通事故.工伤的一些案件最多.起初,以为这些案件就是走走法律流程便可了事,最简单不过,可当完 ...
- 第六十八篇:从ADAS到自动驾驶(一):自动驾驶发展及分级
作者:liaojiacai 邮箱: ljc_v2x_adas@foxmail.com 从ADAS到自动驾驶(一):自动驾驶的发展及分级 从今天起,我将根据自己所接触的ADAS和无人驾驶技术,来 ...
- 第十八篇:Question Answering问答系统
目录 介绍 事实问题 非事实问题 为什么我们关注 NLP 中的事实问题? 2 种关键方法 大纲 IR-based QA 基于 IR 的 事实(Factoid) QA:TREC-QA 问题处理 答案类型 ...
- WPF效果第一百七十八篇ItemsControl旋转
在前面分享的几篇中咱已经玩耍了Popup.ListBox多选.Grid动态分.RadioButton模板.控件的拖放效果.控件的置顶和置底.控件的锁定.自定义Window样式.动画效果.Expande ...
- “约见”面试官系列之常见面试题之第八十八篇之什么是vue生命周期(建议收藏)
我们知道vue是一个构建数据驱动的 web 界面的渐进式框架,那么vue生命周期是什么呢?本篇文章就给大家来介绍一下vue生命周期的内容,希望可以帮助到有需要的朋友. vue生命周期是什么? Vue生 ...
- 【手写 Vue2.x 源码】第十八篇 - 根据 render 函数,生成 vnode
一,前言 上篇,介绍了 render 函数的生成,主要涉及以下两点: 使用 with 对生成的 code 进行一次包装 将包装后的完整 code 字符串,通过 new Function 输出为 ren ...
- 【第十八篇】商城系统-订单中心设计解决方案
订单模块 一.资源整合 我们需要把相关的静态资源拷贝到nginx,然后动态模板文件拷贝到order项目的templates目录下,然后调整资源的路径.在网关中设置对应的路由即可. 二.整合Spri ...
最新文章
- awk: (FILENAME=- FNR=1) 致命错误: 试图访问字段 -2
- 四十六、获得SD卡的大小以及内部的文件信息
- Java基本sql_常用sql
- 成长 | 《大厂晋升指南》学习总结(中)
- Ocelot简易教程(三)之主要特性及路由详解
- 团队开发框架(Developement Structure for Team),内容列表及整理计划
- java map转string_【库学科技】32道常见的Java基础面试题
- pycharm镜像源_pycharm安装第三方库
- VGA接口一根针折了
- 外键列到底要建在哪里?
- MAC编译jogl/gluegen很顺利
- JCreator中不能引入servlet包的解决办法
- 低频声音功率放大器电子设计报告
- 红外倒车雷达原理图_超声波倒车雷达电路图及原理分析
- 20种在学习编程的同时也可以在线赚钱的方法
- 爬虫使用代理socks
- 5、passcode
- 清华邓俊辉教授 数据结构算法 课程内容
- web学习-html(2)
- 关于无迹卡尔曼滤波(UKF)的权重
热门文章
- 测试你的前端代码 - part3(端到端测试)
- Jersey Restful Application with tomcat
- 老鼠之Atlas之旅(一):Atlas官方站点
- Yii2中你可能忽略但很有用的两个方法batcheach
- js代码实现购物车效果
- 2018区块链生存指南:要做飞行的猪、摔不坏的弹球、未来的种子
- ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes怎么处理
- 数据库访问的弹性化---WebLogic和Oracle RAC的整合:Active GridLink
- C#线程系列讲座(3):线程池和文件下载服务器
- ActiveMQ简单使用介绍