python - 烧瓶返回空的json
问题描述
尝试从教程中构建一个简单的 Flask 应用程序。
在这个阶段,尝试从控制台发起一个成功的请求,在我的数据库中发布新数据。我通过 app.py 在一个窗口中运行我的服务器,然后在控制台窗口中启动请求,如下所示:
requests.post("http://localhost:5000/todo", json={"Title":"my first todo", "Description":"my first todo"})
期望在我访问时看到该输出http://localhost:5000/todo
。服务器显示代码 200,但是当我访问该站点时,json 为空:[]
应用程序.py:
from flask import Flask, request, jsonify
from models import Schema
from service import ToDoService
import json
app = Flask(__name__)
@app.route("/todo", methods=["POST"])
def create_todo():
return jsonify(ToDoService().create(request.get_json()))
@app.route("/todo", methods=["GET"])
def list_todo():
return jsonify(ToDoService().list())
if __name__ == "__main__":
Schema()
app.run(debug=True)
模型.py:
import sqlite3
class Schema:
def __init__(self):
self.conn = sqlite3.connect('todo.db')
self.create_user_table()
self.create_to_do_table()
def create_to_do_table(self):
class ToDoModel:
global TABLENAME
TABLENAME = "Todo"
def __init__(self):
self.conn = sqlite3.connect('todo.db')
def get_by_id(self, _id):
where_clause = f"AND id={_id}"
return self.list_items(where_clause)
def create(self, text, description):
query = f'insert into {TABLENAME} ' \
f'(Title, Description) ' \
f'values ("{text}","{description}")'
result = self.conn.execute(query)
return self.get_by_id(result.lastrowid)
def select(self, text, description):
query = f'values ("{text}","{description}")'
result = self.conn.execute(query)
return result
def list_items(self, where_clause=""):
query = f"SELECT id, Title, Description, DueDate, _is_done " \
f"from {TABLENAME} WHERE _is_deleted != {1} " + where_clause
#print (query)
result_set = self.conn.execute(query).fetchall()
result = [{column: row[i]
for i, column in enumerate(result_set[0].keys())}
for row in result_set]
return result
服务.py:
from models import ToDoModel
class ToDoService:
def __init__(self):
self.model = ToDoModel()
def create(self, params):
result = self.model.create(params["Title"], params["Description"])
return result
def update(self, item_id, params):
return self.model.update(item_id, params)
def list(self):
response = self.model.list_items()
return response
解决方案
推荐阅读
- javascript - EJS- 更改页面内容和 URL
- c# - C# MySql.Data.MySqlClient 创建数据库失败
- visual-c++ - 使用 CAPL Dll 的静态链接库的问题,
- c# - 如何在 C# 中编写 Int Mid 函数
- javascript - 我如何定位对象数组中的属性
- c# - 处理异步任务时使用 await 与使用 ContinueWith 有何不同?
- java - Android AsyncTaskLoader 不能与 ArrayList 一起工作
- c# - 带有 Restsharp 的 RESTcall 不起作用(使用代理)
- javascript - 如何在不触发最后一个的情况下调用 onclick 以获得更多 href - 嵌入式 javascript 模板
- html - 如何更改进度条的位置?(CSS)