• Flask架站基础篇(五)----Jinja2模板


    零、使用模板

    #引入render_template
    from flask import Flask,render_template
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        #调用render_template,传递模板名称
        return render_template('index.html')
    
    if __name__ == '__main__':
        app.run(debug=True)

    一、视图函数给模板传参

    方法一:如果参数较少的情况下可使用如下方法:

    from flask import Flask,render_template
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        #给render_template传递模板页所需的参数
        return render_template('index.html',username='admin')
    
    if __name__ == '__main__':
        app.run(debug=True)

    方法二:如果参数较多使用如下方法

    from flask import Flask,render_template
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        context={
            'username':'admin',
            'gender':'男',
            'age':18
        }
        #给render_template 传递一个字典/列表/模型
        return render_template('index.html',**context)
    
    if __name__ == '__main__':
        app.run(debug=True)

    模板页接收方法:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        这是HTML模板中出现的文字
        <p>用户名:{{ username }}</p>
        <p>性别:{{ gender }}</p>
        <p>年龄:{{ age }}</p>
    </body>
    </html>

    二、模板访问模型和字典

    方法如下代码

    from flask import Flask, render_template
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def index():
        class Person(object):
            name = 'admin123'
            age = 18
    
        p = Person();
        #将模型传递给字典
        context = {
            'username': 'admin',
            'gender': '男',
            'age': 18,
            'person': p,
            'websites': {
                'baidu': 'baidu.com'
            }
        }
        return render_template('index.html', **context)
    
    if __name__ == '__main__':
        app.run(debug=True)
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        这是HTML模板中出现的文字
        <p>用户名:{{ username }}</p>
        <p>性别:{{ gender }}</p>
        <p>年龄:{{ age }}</p>
        <hr>
        <!--调用字典/模型,都可以用以下的方法
        也可以使用如:person['name']这样的方法-->
        <p>用户名:{{ person.name }}</p>
        <p>年龄:{{ person.age }}</p>
        <p>网站:{{ websites.baidu }}</p>
    </body>
    </html>

    三、模板页使用python代码

    语法如下:

    {% python代码开始 %}
    html代码
    {% python代码结束 %}

    示例如下:

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        {% if user.age>18%}
            <a>我是{{user.name}}</a>
        {% endif %}
    </body>
    </html>

    四、过滤器

    过滤器作用于模板中的变量
    语法:

    {{ 变量 | 过滤器名称 }}

    五、母版页

    在“templates”文件夹下创建一个html文件作为母版页,在使用该页面的html文件中引入该文件,引入方式如下:

    {% extends 'base.html' %}

    在子模版中自定义内容方法:
    1. 在母版页中使用block,代码如下:

    {% block main %}
    {% endblock %}
    1. 在子模版页中使用模板也定义的block,代码如下
    {% block main %}
        子模版自定义内容
    {% endblock %}
  • 相关阅读:
    从零开始写代码AdaBoost算法的python实现
    从零开始写代码 ID3决策树Python
    redis有启动,但是其他主机telnet 不通的问题
    关于js查找和筛选和循环的几种方式(find();findIndex();filter();some();every();forEach;map();for/in)
    linux 设置tomcat 重启清空 catalina.out 断舍离
    旋转数组 断舍离
    nginx 普通用户启动配置 && springbootswagger 报错 Unable to infer base url 断舍离
    CentOS yum 直接安装最新的nginx【转】 断舍离
    买卖股票的最佳时机 II 断舍离
    swagger 的 pathmapping 配置的理解 断舍离
  • 原文地址:https://www.cnblogs.com/gangzhucoll/p/12778266.html
Copyright © 2020-2023  润新知