模板

模板:其实是一个包含响应文本的文件,其中用占位符(变量)表示动态部分,

告诉模板引擎其具体的值需要从使用的数据中获取
使用真实值替换变量,再返回最终得到的字符串,这个过程称为“渲染”
Flask是使用 Jinja2 这个模板引擎来渲染模板

使用模板的好处:

视图函数只负责业务逻辑和数据处理(业务逻辑方面)
而模板则取到视图函数的数据结果进行展示(视图展示方面)
代码结构清晰,耦合度低。

了解了什么是模板以及模板的作用,下面我们来看看模板的简单语法使用:

在使用网页模板首先我们要导入:

from flask import Flask,render_template

Flask提供的 render_template 函数封装了该模板引擎
render_template 函数的第一个参数是模板的文件名,后面的参数都是键值对,表示模板中变量对应的真实值。

代码如下:

# -*- encoding: utf-8 -*-

#网页模板需要导入render_template
from flask import Flask,render_template

#建立对象
app=Flask(__name__)

@app.route('/')
def index():
    my_str = '你好世界'
    my_int=123
    my_list=['','','','','','','']
    my_dict={'name':'xiaowang'}
    context={}
    context['my_str']=my_str
    context['my_int']=my_int
    context['my_list']=my_list
    context['my_dict']=my_dict
    #使用render_tempate模板来渲染文件,通过第二个参数传递数据变量
    # return render_template('day3.html',my_str=my_str,my_int=my_int,my_list=my_list,my_dict=my_dict)
   #下面还有一种比较简单的方法:
#通过**引用来嵌套dict直接传递给模板 return render_template('day3.html',**context) if __name__ == "__main__": app.run( debug=True)

现在我们要在项目下创建 templates 文件夹,用于存放所有的模板文件,并在目录下创建一个模板html文件。

代码如下:

在写代码的时候我先来介绍几个小语法:

{{ }} 来表示变量名,这种 {{ }} 语法叫做变量代码块
用 {% %} 定义的控制代码块,可以实现一些语言层次的功能,比如循环或者if语句
使用 {#  #} 进行注释,注释的内容不会在html中被渲染出来

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>flask网页模板学习</title>
  </head>
  <body>
    <div>
      这是我们第一个网页模板<br />
      {# 这里是注释,最基本的模板语法输出一个变量 #} <br />
      {{ my_str }} <br />

      {# 模板语法可以做简单的运算操作 #} <br />
      {{ my_int + 10 }}

      {# 模板语法可以用下标引用的方式输出list元素#} <br />
      {{ my_list }} <br />
      {# 模板语法可以通过调用key来输出value#}<br />

      {{ my_dict["name"] }}

      {# 使用{%%}来定义简单的逻辑控制代码 #}

      {% if my_int%} 整形存在 {% else%}
      不存在 
      {# 使用if判断,一定要有endif 来结束判断#} 
      {% endif%}
      <ul>
        {# 使用for循环来遍历list#} {% for i in my_list%}
        <li>{{ i }}</li>
        {%endfor%}
      </ul>

      {# 使用 if for 嵌套来实现单双行背景色#}

      <table style="border:1px solid yellow">
        {% for item in my_list%} {#
        使用loop关键字可以调用循环的索引,来判断下标单双#}
         {% if loop.index % 2 == 0%}
        <tr style="background-color:red">
          <td>{{ item }}</td>
        </tr>
        {% else %}
        <tr style="background-color:blue">
          <td>{{ item }}</td>
        </tr>
        {% endif %}
         
        {% endfor %}
      </table>
    </div>
  </body>
</html>

这里有几个注意点:

在使用 if 判断完毕后一定要有 endif 来结束

在使用 for 循环完毕后 也需要 endfor 来结束

{{ }} 来表示变量名
{% %} 可以实现一些语言层次的功能,比如循环或者if语句
{#  #} 进行注释

这几个基本格式千万要仔细 不能出错。

 

网页模板的基本使用还有很多很多  这次就先写到这,下次继续补充。

 

posted on 2018-12-21 11:57  Lucky~  阅读(299)  评论(0编辑  收藏  举报