侧边栏壁纸
  • 累计撰写 278 篇文章
  • 累计创建 3 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

【Flask】Flask响应请求与模板引擎

xuanxuan
2022-05-08 / 0 评论 / 0 点赞 / 5 阅读 / 3146 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-02-14,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Flask响应请求与模板引擎

响应请求

响应html

@index_page.route("/text")
def text():
    return "text/html"
@index_page.route("/text_same")
def text_same():
    response = make_response("text/html",200)
    return response

响应json

@index_page.route("/json")
def json():
    import json
    data = {"a":"b"}
    response = make_response(json.dumps(data))
    response.headers["Content-Type"] = "application/json"
    return response

@index_page.route("/json_same")
def json_same():
    data = {"a" : "b"}
    response = make_response(jsonify(data))
    return response

模板响应

@index_page.route("/template")
def template():
    return render_template("index.html") #注意index.html在templates文件夹下

相见如下所示Jinja2模板引擎。

模板引擎

Jinja2用于前后端不分离项目。

基本语法

html文件中的代码

var name = {{name}} 
{% if user %}
{{ user.nickname }} 联系QQ:{{user.qq}}主页:{{user.home_page}}
{% endif %}
 {% for tmp_num in num_list %}
 {{ tmp_num }}
 {% endfor %}

对应python代码:

@index_page.route("/template")
def template():
    #传值
    name = "test01"
    context = {"name":name}
    context['user'] = {'nickname':'小叮当',"qq":"1660219734","home_page":"banshengua.top"}
    context['num_list'] = [1,2,3,4,5]

    return render_template("index.html",**context)
   # return render_template("index.html",name)
  • 模板继承

Jinja中最强大的部分就是模板继承。

模板继承允许你构建一个包含你站点共同元素的基本模板“骨架”,并定义子模块可以覆盖的块。

(类似于QT中QSS的语法,例如,#QPushButton{xxx},对当前ui文件中的所有QPushButton部件进行统一的美化。)其实也不是很贴切。

{% extends "common/layout.html" %}

{% block content %}

hello i am extend_template

{% endblock %}

common/layout.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>这是统一模板</title>
</head>
<body>
{% block content %} {% endblock %}
</body>
</html>

对应python调用

@index_page.route("/extend_template")
def extend_template():
    return render_template("extend_template.html")

项目结构:

image-20220508003141224

这里的layout就是一个通用的模板。extend_template.html和extend_template_other.html在layout.html基础上进行修改。(例如:子类重写父类)

0

评论区