zoukankan      html  css  js  c++  java
  • Flask 5 模板1

    NOTE

    1.VF的作用:生成请求的响应。一般来说请求会改变程序的状态,这种变化会在视图函数中产生。

    eg.用户在网站中注册了一个新账户,用户在表单中输入电子邮件地址和密码,然后提交到服务器,服务器接收到请求,然后Flask将请求分发到处理注册的视图函数。这个视图函数首先要访问数据库添加新用户,然后生成响应返回游览器。

    访问数据库添加新用户的过程称为业务逻辑,生成响应返回称为表现逻辑。

    2.将业务逻辑和表现逻辑混杂在一起使代码难以理解和维护。把表现逻辑移动到模板中能够提升程序的可维护性。

    3.模板是一个保含响应文本的文件,其中有需要用上下文中的真实值替换占位变量的动态部分,也有无法改变的静态部分。

    用真实值替换变量,返回响应字符串,称为渲染。

    Flask使用了名为Jinja2的强大模板引擎。

    4.Demo

    Jinja2 templates/index.html

    <h1>Hello World!</h1>
    

    Jinja2 templates/user.html

    <h1>Hello, {{ name }}!</h1>
    

    模板渲染:从flask导入render_template函数,以集成Jinja2引擎。

    #!/usr/bin/env python
    
    from flask import Flask, render_template
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return render_template('index.html')
    
    @app.route('/user/<name>')
    def user(name):
        return render_template('user.html', name=name)
    
    if __name__ == '__main__':
        app.run(debug=True)
    

    name=name 关键字键值对,左边的name是参数名,右边的name是变量。

    (venv) sh-3.2# ./hello.py 
     * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
     * Restarting with stat
     * Debugger is active!
     * Debugger pin code: 195-717-834
    127.0.0.1 - - [18/Feb/2017 15:52:11] "GET / HTTP/1.1" 200 -
    127.0.0.1 - - [18/Feb/2017 15:52:22] "GET / HTTP/1.1" 200 -
    127.0.0.1 - - [18/Feb/2017 15:52:23] "GET /user/wasdns HTTP/1.1" 200 -
    127.0.0.1 - - [18/Feb/2017 15:52:25] "GET /user/wasdns HTTP/1.1" 200 -
    

    5.{{ name }}结构表示一个变量,是一种特殊的占位符。Jinja2能够识别所有类型的变量,甚至是一些复杂的类型。

    此外,可以使用过滤器来修改变量,过滤器名添加在变量名之后,中间使用竖线划分。

    => Flask的Jinja2模板引擎 — 过滤器(3rd)

    safe        渲染值时不转义
    capitaliza  把值的首字母替换为大写,其他为小写。
    

    eg.

    <h1>Hello, {{ name|capitalize }}!</h1>
    
    @app.route('/user/<name>')
    def user(name):
        return render_template('filter.html', name=name)
    
    127.0.0.1 - - [18/Feb/2017 16:11:01] "GET /user/wasdns HTTP/1.1" 200 -
    

    出于安全考虑,Jinja2会转义所有变量。有些情况下需要显示变量中存储的html代码,这个时候就需要使用safe过滤器。

    2017/2/18

  • 相关阅读:
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第4章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第3章 读书笔记(待更新)
    Algebra, Topology, Differential Calculus, and Optimization Theory For Computer Science and Machine Learning 第1,2章 读书笔记(待更新)
    Tkinter的Message组件
    Git 实操/配置/实践
    mysq5.7.32-win安装步骤
    行为型模式之模板方法
    结构型模式之组合模式
    结构型模式之享元模式
    结构型模式之外观模式
  • 原文地址:https://www.cnblogs.com/qq952693358/p/6413383.html
Copyright © 2011-2022 走看看