前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >flask第十九篇——模板【3】

flask第十九篇——模板【3】

作者头像
孟船长
发布2018-05-21 11:04:59
4670
发布2018-05-21 11:04:59
举报

今天我们继续模板的知识,现在我们增加字典的复杂度,这个时候在render_template第二个参数可以传**title,以后我们会用**context代替原来的title=title

# coding: utf-8

from flask import Flask, render_template

app = Flask(__name__)  # type: Flask
app.debug = True

@app.route('/')
def hello_world():

    title = {"tPrize": "key",
             "info": {"name": u"Warren",
                      "age": 18,
                      "gender": u"男"},
             "val": {"title": u'标题',
                     "content": u'内容'}}
    
    return render_template('post/index.html', **title)
    

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

相应的我们的index.html文件也要做一些修改,就是将变量处的传参改为具体的key值,比如我们想获取title里面的info值,那么我们只需要在大胡须里写info即可:

<!DOCTYPE html>

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

    <h1>{{ info }}</h1>

</body>
</html>

执行代码可以看到页面显示的是info的值:

html中,注释用{# 注释内容 #},快捷键是ctrl+/比如:

现在我们新建一个登录的html文件

代码(方便大家复制)

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
    这是登录页面
</body>
</html>

在主文件中新建login方法:

@app.route('/login/')
def login():
    return render_template('login.html')

index.html文件中增加一行超链接:<a href='#'>链接到登录页面</a>

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

{#    <p>这段代码被注释了</p>#}
    <h1>{{ info }}</h1>
    <a href="#">链接到登录页面</a>
</body>
</html>

现在我们想要跳转页面,那么超链接里`href`就要写跳转的url,如果粗鲁一点就直接写'/login/',这样肯定是可以的:

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

{#    <p>这段代码被注释了</p>#}
    <h1>{{ info }}</h1>
    <a href="/login/">链接到登录页面</a>
</body>
</html>

但是如果下次登录页面变成/post/login/我们还要来修改这里的路径,所以这时候我们就要用到url_for了。将地址改为:{{ url_for('login') }}即可,注意,url_for里面的传参是函数名,这样我们即使修改路径,只要不修改函数名,那么就不必每次都来修改这里的链接值了。

我们来页面上通过开发者工具查看一下,发现给的路径就是'login'

只要我们点击“链接到登录页面”,页面就会到转到127.0.0.1:5000/login/了。

最后附上本节的所有代码,方便大家自己下去操作:

结构:

index.html

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

{#    <p>这段代码被注释了</p>#}
    <h1>{{ info }}</h1>
    <a href="{{ url_for('login') }}">链接到登录页面</a>
</body>
</html>

rendertemplateDemo.py

# coding: utf-8

from flask import Flask, render_template

app = Flask(__name__)  # type: Flask
app.debug = True

@app.route('/')
def hello_world():

    title = {"tPrize": "key",
             "info": {"name": u"Warren",
                      "age": 18,
                      "gender": u"男"},
             "val": {"title": u'标题',
                     "content": u'内容'}}

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

@app.route('/login/')
def login():
    return render_template('login.html')

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

login.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>登录页面</title>
</head>
<body>
    这是登录页面
</body>
</html>
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-01,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 自动化测试实战 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 最后附上本节的所有代码,方便大家自己下去操作:
相关产品与服务
云开发 CLI 工具
云开发 CLI 工具(Cloudbase CLI Devtools,CCLID)是云开发官方指定的 CLI 工具,可以帮助开发者快速构建 Serverless 应用。CLI 工具提供能力包括文件储存的管理、云函数的部署、模板项目的创建、HTTP Service、静态网站托管等,您可以专注于编码,无需在平台中切换各类配置。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档