0
点赞
收藏
分享

微信扫一扫

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


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")

项目结构:

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

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


举报

相关推荐

0 条评论