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即可。

原文发布于微信公众号 - 自动化测试实战(gh_839e78b6ba28)

原文发表时间:2018-03-30

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏深度学习之tensorflow实战篇

python文件打开方式详解——a、a+、r+、w+区别

第一步 排除文件打开方式错误: r只读,r+读写,不创建 w新建只写,w+新建读写,二者都会将文件内容清零 (以w方式打开,不能读出。w+可读写) **w+与r...

5177
来自专栏LanceToBigData

linux(八)linux系统中查找文件二

前面介绍的是find命令,我们发现一个find命令居然有那么多的命令,我看到都要晕了,不管没有关系,加油。相信自己! 一、grep命令   1.1、作用   ...

1947
来自专栏Python小屋

Python使用模块中对象的几种方法

Python默认安装仅包含部分基本或核心模块,启动时也仅加载了基本模块,在需要时再显式地加载(有些模块可能需要先安装)其他模块,这样可以减小程序运行的压力,且具...

3716
来自专栏博岩Java大讲堂

Java虚拟机--类加载器如何加载一个Class文件

1705
来自专栏编程

Python模块知识8:configparser、压缩模块

一、configparser模块 configparser用于处理特定格式的文件,其本质上是利用open来操作文件。 文件格式如: ? 1.基本的读取配置文件 ...

1876
来自专栏Rgc

scrapy回调函数传递参数

scrapy.Request 的callback传参的两种方式 1.使用 lambda方式传递参数 def parse(self, response): ...

2793
来自专栏大内老A

ASP.NET Core管道深度剖析(4):管道是如何建立起来的?

在《管道是如何处理HTTP请求的?》中,我们对ASP.NET Core的请求处理管道的构成以及它对请求的处理流程进行了详细介绍,接下来我们需要了解的是这样一个管...

1906
来自专栏前端大白专栏

angular使用管道实现搜索功能

4296
来自专栏菩提树下的杨过

maven: 打包可运行的jar包(java application)及依赖项处理

IDE环境中,可以直接用exec-maven-plugin插件来运行java application,类似下面这样: 1 <plugin> 2 <g...

2249
来自专栏MasiMaro 的技术博文

C/C++中define定义的常量与const常量

常量是在程序中不能更改的量,在C/C++中有两种方式定义常量,一种是利用define宏定义的方式,一种是C++中新提出来的const型常变量,下面主要讨论它们之...

1071

扫码关注云+社区

领取腾讯云代金券