美文网首页
Python flask 学习笔记(二)

Python flask 学习笔记(二)

作者: 酷酷滴小爽哥 | 来源:发表于2018-12-09 13:42 被阅读0次

    模板引擎

    • 模板渲染
    • 变量
    • 流程控制

    1. 模板渲染

    • Jinja2 模板引擎
    • 页面渲染流程
    一个简单的例子:
    from flask import Flask, render_template
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return render_template("index.html")
    
    
    @app.route('/user/<uname>/')
    def user(uname):
        return render_template("user.html", uname=uname)
    
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>index</title>
    </head>
    <body>
        <h1>hi shaun</h1>
    </body>
    </html>
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>user</title>
    </head>
    <body>
        <h1>Hello, {{ uname }}</h1>
    </body>
    </html>
    

    2. 变量

    • 变量类型
      • 字符串
      • 列表元组
      • 字典
      • 复杂的对象
    • 过滤器
    from flask import Flask, render_template
    
    app = Flask(__name__)
    
    class UserModel(object):
        name = "zhangsan"
        age = 25
        def __str__(self):
            return "%s, %d" % (self.name, self.age)
    
    @app.route('/')
    def index():
        var_str = "这是一个字符串"
        var_str_en = "this is a string"
        var_html = "<h1>this is a html</h1>"
        var_list = ['zheng','shuang']
        var_tuple = ('a', 'b', 'c')
        var_dict = {'key1': 'value1', 'key2': 'value2'}
        var_user = UserModel()
        return render_template('var/index.html',
            var_str = var_str,
            var_str_en = var_str_en,
            var_html = var_html,
            var_list = var_list,
            var_tuple = var_tuple,
            var_dict= var_dict,
            var_user = var_user
        )
    
    if __name__ == '__main__':
        app.run(debug=True)
    
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>var_test</title>
    </head>
    <body>
        <!-- 选择特定字符 -->
        {{ var_str[2] }} {{ var_str[:2] }}
        <hr>
        <!-- 过滤器 将小写转成大写 -->
        {{ var_str_en | upper }}
        <hr>
        <!-- 过滤器 不展示HTML形式 -->
        {{ var_html | safe }}
        <hr>
        {{ var_list[1] }}
        <hr>
        {{ var_tuple[1] }}
        <hr>
        <!-- 字典拿对应值的两种方式 -->
        {{ var_dict.key2 }} {{ var_dict["key1"] }}
        <hr>
        <!-- 对象如何拿对应值 -->
        {{ var_user.name }}
        <hr>
        {{ var_user}}
    </body>
    </html>
    

    3. 流程控制

    • for 循环标签
    • if 条件标签
    • 页面复用
    from flask import Flask, render_template
    
    app = Flask(__name__)
    
    
    @app.route('/')
    def index():
        var_list = ['zheng','shuang']
        var_dict = {'key1': 'value1', 'key2': 'value2'}
        return render_template('label/test_label.html', 
            var_list = var_list,
            var_dict = var_dict
        )
    
    
    @app.route('/user/')
    @app.route('/user/<uname>/')
    def user(uname=None):
        return render_template('label/if.html', uname=uname)
    
    
    @app.route('/extens/')
    def extends():
        return render_template('label/extens.html')
    
    if __name__ == '__main__':
        app.run(debug=True)
    

    test_label.html 主要主要对字典的操作,以及计数操作

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>test_label</title>
    </head>
    <body>
        <h1>循环操作</h1>
        <ul>
            <!-- 使用loop.index 从1开始计数,使用loop.index0 从0开始计数 -->
            {% for item in var_list %}
            <li>{{ loop.index0}} {{ item }}</li>
            {% endfor %}
            <!-- 字典的操作方式 -->
            {% for key, value in var_dict.items() %}
            <li>{{ loop.index0}} {{ key }} -> {{ value }}</li>
            {% endfor %}
        </ul>
    </body>
    </html>
    

    if.html

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>if</title>
    </head>
    <body>
        <h1>条件操作</h1>
        <ul>
            {% if uname %}
            <b>你好,{{ uname }} !</b>
            {% else %}
            <b>你是谁?</b>
            {% endif %}
        </ul>
    </body>
    </html>
    

    base.html 主要注意 include 包含操作

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        {% block title %}
        <title>base page</title>
        {% endblock %}
    </head>
    <body>
        <header>
            <h1>header</h1>
        </header>
        <article>
            {% block content %}
            <h2>article</h2>
            {% endblock %}
        </article>
        {% include 'label/footer.html' %}
    

    footer.html

    <footer>
        <h1>footer</h1>
    </footer>
    </body>
    </html>
    

    extens.html 主要注意 extends 表示继承某个页面

    {% extends 'label/base.html' %}
    
    {% block title %}
        <title>123 page</title>
    {% endblock %}
    

    相关文章

      网友评论

          本文标题:Python flask 学习笔记(二)

          本文链接:https://www.haomeiwen.com/subject/zemhhqtx.html