首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >【Flask】Flask响应请求与模板引擎

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

作者头像
半生瓜的blog
发布2023-05-13 14:03:31
发布2023-05-13 14:03:31
3610
举报
文章被收录于专栏:半生瓜のblog半生瓜のblog

Flask响应请求与模板引擎

响应请求

响应html

代码语言:javascript
复制
@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

代码语言:javascript
复制
@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

**模板响应 **

代码语言:javascript
复制
@index_page.route("/template")
def template():
	return render_template("index.html") #注意index.html在templates文件夹下

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

模板引擎

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

基本语法

html文件中的代码

代码语言:javascript
复制
var name = {{name}} 
代码语言:javascript
复制
{% if user %}
{{ user.nickname }} 联系QQ:{{user.qq}}主页:{{user.home_page}}
{% endif %}
代码语言:javascript
复制
 {% for tmp_num in num_list %}
 {{ tmp_num }}
 {% endfor %}

对应python代码:

代码语言:javascript
复制
@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部件进行统一的美化。)其实也不是很贴切。

代码语言:javascript
复制
{% extends "common/layout.html" %}

{% block content %}

hello i am extend_template

{% endblock %}

common/layout.html

代码语言:javascript
复制
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>这是统一模板</title>
</head>
<body>
{% block content %} {% endblock %}
</body>
</html>

对应python调用

代码语言:javascript
复制
@index_page.route("/extend_template")
def extend_template():
    return render_template("extend_template.html")

项目结构:

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-05-08,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Flask响应请求与模板引擎
    • 响应请求
    • 模板引擎
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档