使用Flask API代替r​​ender_template

时间:2018-11-08 21:15:40

标签: python rest api flask jinja2

去年,我使用Flask开发了一个大型网站。

我使用render_template方法将数据从后端发送到前端,并使用request.form从前端将数据发送到后端

现在,我的产品所有者希望我使用“ API”代替上述解决方案。 而且我完全迷惑了如何使用API​​。

我应该删除任何render_template或request.form吗?

我应该完全更改后端并查看功能吗?

我能只更改render_template和request.form而不更改其余代码吗?

使用API​​后可以使用Jinja模板吗?还是我应该使用JavaScript?

我以前的解决方案是这样的:

apps = apps_model.query.all ()
render_template ('index.html' , apps=apps)

和:

user_name = request.form ['username']

1 个答案:

答案 0 :(得分:1)

  

我的产品所有者希望我使用“ API”代替上述解决方案

据我了解,这意味着您的产品经理希望您将后端与前端分开。简而言之,您应该创建一个[RESTful] API。本质上,您不必使用render_template来处理和解析HTML模板并将其显示给最终用户。

您的新API应该返回JSON对象,然后从客户端(即网站)调用该API,以从数据库中创建,更新,检索和删除数据,然后将信息返回给客户端。

from flask import Flask, jsonify

app = Flask(__name__)

app.route("/", methods=["GET"])
def index():
    api_response = {
        "status": "success",
        "message": "Welcome to our API"
    }
    return jsonify(api_response)
  

我应该删除任何render_template或request.form吗?

您将不再需要render_template,因为您将不会显示或返回HTML页面。但是,request.form仍可用于从客户端收集数据。完全取决于您希望客户端与您的API通信的方式

  

我应该完全更改后端并查看功能吗?

仅更改/创建视图函数以返回特定数据。

示例:

获取所有用户:创建路线/api/users

获取用户A:创建路由/api/users/user_a

  

我能只更改render_template和request.form而不更改其余代码吗?

否。

  

使用API​​后可以使用Jinja模板吗?还是我应该使用JavaScript?

极不可能。您将不再渲染模板。我应该使用Javascript吗?当然,对于您的客户端。

请参见https://www.restapitutorial.com