Flask初级(六)flash模板渲染

Project name :Flask_Plan

templates:templates

static:static

继续上篇的模板

我们已经可以静态调用模板,包括继承模板,保证了页面的一致性,但是我们查询的东西,页面还都是在html文件中的。

渲染,就可以让我们把动态的内容,放进静态的模板中。

修改templates/plan.html 

复制代码
{%  extends 'base.html' %}
{% block main1 %}
    <h1>这是main1提交的新内容{{ name1 }}</h1>
{% endblock %}
{% block main2 %}
    <h3>这是main2提交的新内容{{ name2 }}</h3>
{% endblock %}
View Code
复制代码

修改Flask_Plan.py

@app.route('/')
def hello_world():
    return render_template('plan.html',name1='测试name1的渲染',name2 ='name2渲染')   

就这一行要改的。

访问首页的返回用render_template渲染基于base.html的子模板plan.html,并给其中的两个模板变量赋值。

试试吧。

 

单个模板变量的渲染不过瘾,我们多搞几个,不用这样写一堆变量传进去。

修改Flask_Plan.py

复制代码
@app.route('/')
def hello_world():
    plan = {
        'date': '2017-12-12',
        'train': 'T198',
        'track': 10,
        'start_time': '10:00',
        'end_time': '12:00',
        'plan_end': '8:30',
        'plan_in': '9:30',
        'plan_out': '18:00',
        'plan_start': '20:40'

    }

    return render_template('plan.html', **plan)
View Code
复制代码

修改templates/plan.html 

复制代码
{%  extends 'base.html' %}
{% block main1 %}
    <h1>这是main1提交的新内容{{ name1 }}</h1>
{% endblock %}
{% block main2 %}
    <h3>这是main2提交的新内容{{ name2 }}</h3>
    {{ train }}  <br>
    {{ date }}<br>
    {{ track }}<br>
    {{ start_time }}<br>
    {{ end_time }}<br>
    {{ plan_end }}<br>
    {{ plan_in }}<br>
    {{ plan_out }}<br>
    {{ plan_start }}<br>
{% endblock %}
View Code
复制代码

我们用**plan这个参数,把plan这个字典传入了模板渲染引擎,在plan.html这个模板中直接使用字典索引来显示值。

 

使用更多的模板变量。

修改Flask_Plan.py

复制代码
def hello_world():
    class plan(object):
        P_end = '8:45'
        P_in = '9:30'
        W_start = '10:00'
        W_end = '12:00'
        P_out = '18:00'
        P_start = '20:40'

    p1 = plan()

    plan = {
        'date': '2017-12-12',
        'train': 'T198',
        'track': 10,
        'time': p1,

    }

    return render_template('plan.html', **plan)
View Code
复制代码

修改templates/plan.html 

复制代码
{%  extends 'base.html' %}
{% block main1 %}
    <h1>这是main1提交的新内容{{ name1 }}</h1>
{% endblock %}
{% block main2 %}
    <h3>这是main2提交的新内容{{ name2 }}</h3>
{{ date }}
{{ time.P_start }}
{% endblock %}
View Code
复制代码

这次我们引入了类的概念,把time赋值为实例化的plan,在模板中用 time.***来渲染。

 

我们也可以用字典的嵌套。

修改Flask_Plan.py

复制代码
@app.route('/')
def hello_world():
    class plan(object):
        P_end = '8:45'
        P_in = '9:30'
        W_start = '10:00'
        W_end = '12:00'
        P_out = '18:00'
        P_start = '20:40'

    p1 = plan()

    plan = {
        'train': {

            'date': '2017-12-12',
            'train': 'T198',
            'track': 10,
        },
        'time': p1,

    }

    return render_template('plan.html', **plan)
View Code
复制代码

修改templates/plan.html 

复制代码
{%  extends 'base.html' %}
{% block main1 %}
    <h1>这是main1提交的新内容{{ name1 }}</h1>
{% endblock %}
{% block main2 %}
    <h3>这是main2提交的新内容{{ name2 }}</h3>
{{ train.date }}
{{ time.P_start }}
{% endblock %}
View Code
复制代码

字典的嵌套,我们把date ,train ,track嵌套在train中

在模板中使用train.date train.train train.track来渲染。

作者:上官飞鸿

出处:https://www.cnblogs.com/jackadam/p/8130172.html

版权:本作品采用「知识共享-署名-非商业性-禁止演绎(CC-BY-NC-ND)」许可协议进行许可。

posted @   上官飞鸿  阅读(661)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
more_horiz
keyboard_arrow_up light_mode palette
选择主题
点击右上角即可分享
微信分享提示