二.Flask 模板[jinja2]

一.模板

1.基础

1.1 py文件

from flask import Flask, render_template
app = Flask(__name__)


@app.route('/')
def lucy():
    age = 18
    return render_template('111.html', age=age)


if __name__ == '__main__':
    app.run(host='0.0.0.0', port=80, debug=True)

1.2 html文件

二.Flask 模板[jinja2]_第1张图片

2.传入变量

2.1 单个变量

解释:

  1. py文件里面写为return render_template('111.html', age=age)
  2. html文件写上{{ age }}即可把参数传递过去

2.2 多个变量

2.2.1 **

解释:

  1. py文件里面写为return render_template('111.html', **age),字典相当于age=55;name='jack';class=[1,2,3]
    age={
        "age":55,
        'name':'jack',
        'class':[1,2,3]
    }
  1. html文件里面就把其如下这样写即可
    二.Flask 模板[jinja2]_第2张图片
2.2.2 整体

解释:

  1. py文件里面写为return render_template('111.html', age=age)
    age={
        "age":55,
        'name':'jack',
        'class':[1,2,3]
    }
  1. html文件里面就把其如下这样写即可
    二.Flask 模板[jinja2]_第3张图片

3.if判断和for循环

3.1 if判断

    {% if 条件1 %}
            语句块1
    {% elif 条件2 %}
            语句块2
    {% else %}
            不符合所有条件
    {% endif %}

3.2 for循环

    {% for item in list %}
        list不空是执行
    {% else %}
        list为空时执行的默认语句块
    {% endfor %}

4 过滤器

解释:这个变量 | 函数,很像linux的管道符

内容 用法
变量 | length 变量的长度
变量 | default(默认值) 变量没有值展示默认值

格式:{{ 变量|函数 }}
二.Flask 模板[jinja2]_第4张图片

5 继承

解释:继承的目的就是减少html代码重复书写
展示文件:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <style>
        *{
            margin: 0;
            padding: 0;
        }
        body{
            overflow: hidden;
        }
        .head{
            position: relative;
            top: 0;
            height: 20vh;
            width: 100vw;
            background-color: red;
        }
    </style>
    {% block style %}
    {% endblock %}
</head>
<body>
    <div class="head"></div>
    {% block content %}
    {% endblock %}
</body>
</html>

被复制文件:

{% extends '展示文件.html' %}
{% block style %}
    <style>
        .abs{
            position: relative;
        }
    </style>
{%endblock%}
{% block content %}
{{ super() }}
<div class="abs">1111111111111111222222222222222</div>
{% endblock %}

flask文件:

@app.route('/')
def lucy():
    return render_template('被复制文件.html')

要点: 主旨就是retrun被复制文件,通过其找到展示文件
知识点:

  1. 格式:{% block content %} {% endblock %}
  2. 延伸: {% extends 'xx.html' %}
  3. 保留:{{ super() }}#正常情况被复制文件都会全覆盖展示文件需要调用的地方,在被复制文件里写上super,展示文件原内容也能够保留

6 flash

解释:flash能把服务器(例如表单验证)反馈给前端保存在session里,通过模板让其展示
导入:from flask import flash
加密:app.config['SECRET_KEY']='@#/dadadads]'
格式:flash('content')
模板写入:{{ get_flashed_messages()[0] }}

你可能感兴趣的:(#,Python,Flask学习,flask,python,后端)