flask之jinjia2模板

一:渲染模板

app.run(debug=True)  开启debug模式,flask框架自动提示错误提示的页面显示。

视图函数

from flask import Flask
from flask import request
from flask import redirect
from flask.ext.script import Manager
from flask import render_template

app = Flask(__name__)


@app.route("/user/<name>")
def user_name(name):
    return render_template("user.html", name=name)  # 第一个name是html中的占位符,第二个name是函数的形参


if __name__ == "__main__":
    app.run()

 前端模板

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
    // 这里必须和大括号之间空一个空格
    <h1>hello,{{ name|capitalize }}!</h1>
    <h1>hello,{{ name|capitalize }}!</h1>

</body>
</html>

访问 127.0.0.1:5000/user/zhang 显示:

 

 二:模板变量

  前端里面的{{ name }} 就是一个占位符,@app.route("/user/<name>")  name是一个可变可接受的参数,浏览器传递给视图函数,视图函数通过形参,传给给模板,模板再传递给user.html中的name展位符。

  

三:控制结构

@app.route("/user/<id>")
def user_name(id):
    if id == "1":
        info = {"name":"zhang"}
       return render_template("user.html", user=info)
   else:
    return "不符合"
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

    {% if user %}  # if 语句
        Hello,{{ user }}!  # 变量占位符
    {% else %} # else语句
        Hello,Strange!
    {% endif %}  # 结束if语句

</body>
</html>

输入:127.0.0.1:5000/user/1显示:

输入:127.0.0.1:5000/user/2显示:

 

 四:循环结构

  满足条件后,给jinjin2模板传递列表,进行循环遍历

@app.route("/user/<id>")
def user_name(id):
    if id == "1":
        li = ["zhang","wang","li","zhao"]
        return render_template("user.html",comments=li)
    else:
        return "不符合"
<ul>
    {% for comment in comments %}
    <li>{{ comment }}</li>
    {% endfor %}
</ul>

需求:把 zhang变成红色,wang变成橙色,li变成黄色,zhao变成绿色。类似于下图的样子

<ul>
    {% for comment in comments %}
        {% if loop.index == 1 %}
            <li style="background: red">{{ comment }}</li>
        {%endif%}

        {% if loop.index == 2 %}
            <li style="background: blue">{{ comment }}</li>
        {%endif%}

        {% if loop.index == 3 %}
            <li style="background: yellow">{{ comment }}</li>
        {%endif%}

        {% if loop.index == 4 %}
            <li style="background: green">{{ comment }}</li>
        {%endif%}

    {% endfor %}
</ul>

小技巧:

五:宏

六:抽取

原文地址:https://www.cnblogs.com/meloncodezhang/p/11720849.html