zoukankan      html  css  js  c++  java
  • render_template 网页模板

    模板简单介绍:

      视图函数:视图函数就是装饰器所装饰的方法,视图函数的主要作用是生成请求的响应,这是最简单的请求。实际上,视图函数有两个作用:处理业务逻辑和返回响应内容。在大型应用中,把业务逻辑和表现内容放在一起,会增加代码的复杂度和维护成本。本节学到的模板,它的作用即是承担视图函数的另一个作用,即返回响应内容。

      模板其实是一个包含响应文本的文件,其中用占位符(变量)表示动态部分,告诉模板引擎其具体的值需要从使用的数据中获取,使用真实值替换变量,再返回最终得到的字符串,这个过程称为“渲染”,Flask是使用 Jinja2 这个模板引擎来渲染模板

      Jinja2(参考概念)

      两个概念:

      Jinja2:是 Python 下一个被广泛应用的模板引擎,是由Python实现的模板语言,他的设计思想来源于 Django 的模板引擎,并扩展了其语法和一系列强大的功能,其是Flask内置的模板语言。

      模板语言:是一种被设计来自动生成文档的简单文本格式,在模板语言中,一般都会把一些变量传给模板,替换模板的特定位置上预先定义好的占位变量名。

      官方文档

       渲染模版函数

      Flask提供的 render_template 函数封装了该模板引擎

      模板简单理解就是把前后的代码分离让开发者高效的开发,让代码结构清晰,耦合度降低

    使用render_template:

     网页模板需要flask内的render_template模块:

       

      传参需要先定义好参数传入时render_template()内的第一个参数是html模板名后续加参数,传参时是赋值式  (在html内的标识)= (传入的变量名),也可以用**args,把数据以key value 形式传入字典把整个字典 **变量名传入 到html里直接调用key即可。

      render_template 函数的第一个参数是模板的文件名,后面的参数都是键值对

      {%逻辑运算%}有逻辑运算时必须有{%end%}结束比如:

        {%if sum < 1%}      |          {%for i in sum%}

        {% endif %}            |          {% endfor %}

      html文件内注释可以使用{# 注释内容 #},也可以使用html内的<!-- 注释 -->注释,但是在逻辑运算时如果使用html内的注释会报错,所以建议常用flask内置注释方法 {# 注释内容 #}

    PY文件

    # -*- encoding: utf-8 -*-
    # 网页模板需要导入render_template
    from flask import Flask, render_template
    
    
    app = Flask(__name__)
    
    app.config.from_pyfile('config.ini')
    
    
    @app.route('/')
    def index():
        my_str = '你好世界'
        my_int = 123
        my_list = [1, 2, 3, 48, 93]
        my_dict = {'name': '星宇', 'age': 19}
        contect = {}
        contect['my_shijei'] = my_str
        contect['myint'] = 0
        contect['mylist'] = [1, 2, 3, 48, 93]
        contect['mydict'] = {'name': '牛星宇', 'age': 19}
        # 使用render_template模块来渲染模板文件,通过第二个参数传递数据变量
        # return render_template('day3.html', my_shijei=my_str, myint=my_int, mydict=my_dict, mylist=my_list)
        # 通过**引用来将嵌套dict直接传递给模板
        return render_template('day3.html', **contect)
    
    
    if __name__ == "__main__":
        app.run()

    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>这是我们第一个网页模板</div>
        <br />
        {# 这是注释,最基本的模板语法输出一个变量 #}
        {{ my_shijei + "李毅囧" }}<br />
        {# 模板语法可以以下标引用的方式输出list元素#} 
        {{ mylist[0]}}{{ mylist.1}}<br />
        {#模板可以做简单的运算操作#}
        {{ myint + 10 }} <br />
        {# 模板可以通过调用key取value#}
        {{ mydict["name"] }}{{ mydict.age }}
        {#使用{%%}来定义简单的逻辑控制代码#}
        {% if myint %}
        整型存在 
        {% else %} 不存在 
        {#使用if判断,一定要有endif用来判断结束逻辑判断#}
        {% endif %}
        <ul>
          {# 使用for循环来遍历list #} {% for itme in mylist %}
          <li>{{ itme }}</li>
          {% endfor %}
        </ul>
        {# 使用 if for 嵌套来实现单双行背景色#}
        <table style="padding:5px">
          {% for item in mylist %}
          {#使用loop关键字可以调用循环的索引,用来判断下标单双数#}
          {% if loop.index% 2 == 0 %}
          <tr style="background-color:tomato">
            <td style="border:1px solid black;">{{ item }}</td>
          </tr>
          {%else%}
          <tr style="background-color:violet">
            <td style="border:1px solid black;">{{ item }}</td>
          </tr>
          {% endif%} {% endfor %}
        </table>
      </body>
    </html>
  • 相关阅读:
    BlockingQueue 原理 分析
    java引用 强引用,软引用,弱引用
    actomic cas无锁操作。
    MongoDB库设计原则及实践
    spring事物传播机制 事物隔离级别
    Hive UDAF介绍与开发
    [技术学习]js接口继承
    [技术学习]js继承
    [技术学习]正则表达式分析
    [技术学习]js正则表达式汇总
  • 原文地址:https://www.cnblogs.com/Niuxingyu/p/10154610.html
Copyright © 2011-2022 走看看