flask第十八篇——模板【2】
请关注公众号:自动化测试实战
上一节我们介绍了模板的基本使用方法,现在我们想一个问题,如果把index.html放到template文件夹下面的文件夹该怎么办呢?其实很容易,当文件夹结构如下图所示时:
我们只需要修改render_template的值即可,代码如下:
如果你在pycharm里面修改,pycharm会自动帮你改应用的代码的。
现在来想另一个问题,就是既然模板可以复用,那么它里面的内容肯定不可能写死对吧,如果写成固定值那每个页面的内容都成了一样的了,所以模板就需要写成变量的形式,通过给变量传值来修改模板对应的内容。在flask中,变量的写法是{{ 变量值 }}这种两个大括号(又叫大胡须)的形式。
现在我们在主文件给一段字符串,然后想把它应用到.html模板中,我们该怎门办呢?根据render_template的源码知道它还有第二个参数——关键字参数**context,所以我们知道只需要给它传一个关键字参数即可,加上刚才的大胡须传递变量,我们来看一段代码:
templateDemo.py文件
# coding: utf-8
from flask import Flask, render_template
app = Flask(__name__) # type: Flask
app.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_template
app = Flask(__name__) # type: Flask
app.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即可。
请关注公众号:自动化测试实战
flask第十八篇——模板【2】的更多相关文章
- flask第二十二篇——模板【4】过滤器
请关注微信公众号:自动化测试实战 先来教大家一个pycharm设置默认模板的方法.我们每次新建模板或者平时写代码打开以后可能都要重复写# coding: utf-8这些代码,其实我们可以设置好模板,让 ...
- flask第十九篇——模板【3】
请关注微信公众号:自动化测试实战 今天我们继续模板的知识,现在我们增加字典的复杂度,这个时候在render_template第二个参数可以传**title,以后我们会用**context代替原来的ti ...
- flask第二十六篇——模板【控制语句】【2】
如果你也在学flask,就请加船长的公众号:自动化测试实战 我们先补充一下for循环的知识,我们之前说过,flask是由Jinja2+sqlAlchemy+werkzeug组成的,我们现在学的控制语句 ...
- flask第二十四篇——模板【6】自定义过滤器
请关注孟船长的公众号:自动化测试实战 大家想了解其他过滤器可以参考这里: http://jinja.pocoo.org/docs/dev/templates/#builtin-filters ---- ...
- flask第二十八篇——HTML【1】table标签
请关注公众号:自动化测试实战 以下内容参考:http://www.w3school.com.cn/tags/tag_table.asp <!DOCTYPE html> <html l ...
- Python之路【第十八篇】:Web框架们
Python之路[第十八篇]:Web框架们 Python的WEB框架 Bottle Bottle是一个快速.简洁.轻量级的基于WSIG的微型Web框架,此框架只由一个 .py 文件,除了Pytho ...
- Egret入门学习日记 --- 第十八篇(书中 8.5~8.7 节 内容)
第十八篇(书中 8.5~8.7 节 内容) 其实语法篇,我感觉没必要写录入到日记里. 我也犹豫了好久,到底要不要录入. 这样,我先读一遍语法篇的所有内容,我觉得值得留下的,我就录入日记里. 不然像昨天 ...
- Android UI开发第二十八篇——Fragment中使用左右滑动菜单
Fragment实现了Android UI的分片管理,尤其在平板开发中,好处多多.这一篇将借助Android UI开发第二十六篇——Fragment间的通信. Android UI开发第二十七篇——实 ...
- Python开发【第十八篇】Web框架之Django【基础篇】
一.简介 Python下有许多款不同的 Web 框架,Django 是重量级选手中最有代表性的一位,许多成功的网站和APP都基于 Django. Django 是一个开放源代码的Web应用框架,由 P ...
随机推荐
- webpack入门配置
webpack入门配置 根据该篇文章进行配置: 入门 Webpack,看这篇就够了 其中由于版本更新的问题会出现几个问题: 1.Would you like to install webpack-cl ...
- Python之坐标轴刻度细化、坐标轴设置、标题图例添加
学习python中matplotlib绘图设置坐标轴刻度.文本 http://www.jb51.net/article/134638.htm Python绘图 https://www.cnblogs. ...
- Windows音频SDK的发展历程
WASAPI is one of several native audio libraries in Windows. PortAudio actually supports five of them ...
- C++:tinyxml的使用
1. 简介 TinyXML2(最新版本)是一个开源的功能齐全的XML解析库 For C++,源码见:github. 2. 开始使用 首先从Github上获得源码,是一个完整的演示工程,我们只需要其中的 ...
- HTML条件注释判断浏览器版本命令
<!--[if !IE]><!--> 除IE外都可识别 <!--<![endif]--> <!--[if IE]> 所有的IE可识别 <![ ...
- nfc功能读写 demo
点此下载//这个demo是把这个程序作为一个手机启动选择的,只要一扫到卡片就会跳转到这个Activity. 只在当前Activity中有效参考:http://blog.csdn.net/zoeice/ ...
- netcat 安装 及netcat 命名介绍
netcat 安装 https://blog.csdn.net/transformer_wsz/article/details/77624087 http://www.cnblogs.com/php- ...
- QT帮助文档 英文
http://doc.qt.io/archives/qtquick-components-symbian-1.1/qml-button.html
- Linux(CentOS 7) 新增或修改 SSH默认端口
通过ssh连接到服务器,登录root用户 执行命令编辑sshd配置文件 vi /etc/ssh/sshd_config 找到这一行 # Port 去除#号,修改22 为你想要的端口 重启sshd服务 ...
- C语言实现的矩阵乘法运算器
需求 编写程序模拟矩阵乘法,一个m*n的矩阵,乘以一个 n*m 的矩阵, 并且输出结果. STEP 1 矩阵乘法的计算 一个m行n列的矩阵与一个n行p列的矩阵可以相乘,得到的结果是一个m行p列的矩阵 ...