龙卷风反转 url 请求 post
tornado reverse url with post request
我在 tornado 应用程序中有一个报告服务。
我想重新使用从报告 Json.
创建报告的功能
意思是,在 "regenerate" 现有报告的新处理程序中,我想重用知道如何从 Json.
创建报告的现有处理程序
server.py:
def create_server():
return tornado.web.Application([
(r"/task", generator.GenHandler),
(r"/task/(.+)", generator.GenHandler),
url(r"/regenerate_task", generator.GenHandler, name="regenerate_task"),
url(r"/regenerate_task/(.+)", generator.GenHandler, name="regenerate_task"),
(r"/report_status/regenerate", report_status.Regenerate)
genHandler.class:
class GenHandler(tornado.web.RequestHandler):
async def post(self):
try:
LOGGER.info(str(self.request.body))
gen_args = self.parsed_body
# create here report using the parsed body
这是我要创建的处理程序。
它将从数据库中获取已保存的 json 并使用原始报告逻辑创建一个全新的报告。
class Regenerate(tornado.web.RequestHandler):
async def post(self):
rep_id = self.request.arguments.get('rep_id')[0].decode("utf-8") if self.request.arguments.get('rep_id') \
else 0
try:
report = db_handler.get_report_by_id(rep_id)
if *REPORT IS VALID*:
return self.reverse_url("regenerate_task", report)
else:
report = dict(success=True, report_id=rep_id, report=[])
except Exception as ex:
report = dict(success=False, report_id=rep_id, report=[], error=str(ex))
finally:
self.write(report)
现在,没有任何反应。我刚得到我需要的 JSON,但没有 GenHandler 条目,也没有重新生成报告
- reverse_url returns 指定别名的 url,但不调用它。
- 您遇到这样的问题,您必须调用另一个处理程序,因为您的代码组织不佳。在处理程序中存储报告生成代码(即业务逻辑)是一种不好的做法,您应该将其移动到单独的 class(在 MVC 模式中通常称为控制器,处理程序是视图)或至少单独方法,然后在您的 Renegate 处理程序中重用它。
我在 tornado 应用程序中有一个报告服务。 我想重新使用从报告 Json.
创建报告的功能意思是,在 "regenerate" 现有报告的新处理程序中,我想重用知道如何从 Json.
创建报告的现有处理程序server.py:
def create_server():
return tornado.web.Application([
(r"/task", generator.GenHandler),
(r"/task/(.+)", generator.GenHandler),
url(r"/regenerate_task", generator.GenHandler, name="regenerate_task"),
url(r"/regenerate_task/(.+)", generator.GenHandler, name="regenerate_task"),
(r"/report_status/regenerate", report_status.Regenerate)
genHandler.class:
class GenHandler(tornado.web.RequestHandler):
async def post(self):
try:
LOGGER.info(str(self.request.body))
gen_args = self.parsed_body
# create here report using the parsed body
这是我要创建的处理程序。 它将从数据库中获取已保存的 json 并使用原始报告逻辑创建一个全新的报告。
class Regenerate(tornado.web.RequestHandler):
async def post(self):
rep_id = self.request.arguments.get('rep_id')[0].decode("utf-8") if self.request.arguments.get('rep_id') \
else 0
try:
report = db_handler.get_report_by_id(rep_id)
if *REPORT IS VALID*:
return self.reverse_url("regenerate_task", report)
else:
report = dict(success=True, report_id=rep_id, report=[])
except Exception as ex:
report = dict(success=False, report_id=rep_id, report=[], error=str(ex))
finally:
self.write(report)
现在,没有任何反应。我刚得到我需要的 JSON,但没有 GenHandler 条目,也没有重新生成报告
- reverse_url returns 指定别名的 url,但不调用它。
- 您遇到这样的问题,您必须调用另一个处理程序,因为您的代码组织不佳。在处理程序中存储报告生成代码(即业务逻辑)是一种不好的做法,您应该将其移动到单独的 class(在 MVC 模式中通常称为控制器,处理程序是视图)或至少单独方法,然后在您的 Renegate 处理程序中重用它。