zoukankan      html  css  js  c++  java
  • Flask ~~“一见钟情之初体验”(flask的网页模板介绍及使用①)

                                                                                     模板

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

    告诉模板引擎其具体的值需要从使用的数据中获取
    使用真实值替换变量,再返回最终得到的字符串,这个过程称为“渲染”
    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语句
    {#  #} 进行注释

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

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

  • 相关阅读:
    Python(93)_网络编程基础
    Web前端(13)_路径
    Web前端(12)_注释
    Web前端(11)_base标签
    Python(91)_python复习
    Web前端(10)_css文本样式
    Web前端(9)_div+span等标签
    虚拟化(6)_CPU虚拟化
    虚拟化(5)_打开tcp监听
    虚拟化(4)_离线克隆与在线克隆
  • 原文地址:https://www.cnblogs.com/sashao/p/10154980.html
Copyright © 2011-2022 走看看