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 %}
修改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)
修改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 %}
我们用**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)
修改templates/plan.html
{% extends 'base.html' %} {% block main1 %} <h1>这是main1提交的新内容{{ name1 }}</h1> {% endblock %} {% block main2 %} <h3>这是main2提交的新内容{{ name2 }}</h3> {{ date }} {{ time.P_start }} {% endblock %}
这次我们引入了类的概念,把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)
修改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 %}
字典的嵌套,我们把date ,train ,track嵌套在train中
在模板中使用train.date train.train train.track来渲染。