Flask:操作视图参数的首选方法?

时间:2013-11-18 07:28:13

标签: python rest sqlalchemy flask

我正在使用Flask& amp;创建REST API有一个问题涉及操纵视图问题的参数。我目前有两个资源,“Survey”和“SurveyStep”,可通过以下方式访问:

/surveys
/survey/*survey-id*/steps/*step-id*

由于我将为每个请求使用Survey资源,我希望在每次请求之前自动获取它(SQLAlchemy)。

目前,我找到了3种方法:

1)编写URL转换器,如(http://corbinsimpson.com/entries/be-prepared.html

中所述

2)使用@ .... before_request,手动向request.view_args添加内容

3)使用@ .... before_request,将其添加到flask.g对象

我第一次尝试1),其中有炼金术对象不属于会话的问题,如果是懒惰的关系,则需要先添加它们。

2)看起来很“脏”,因为你的函数得到的参数并没有真正明显宣布

3)是我现在正在使用的,它使得函数本身不需要视图参数,但它解决了会话问题&它比2更明显。

有任何想法,警告,改进吗?

谢谢!

1 个答案:

答案 0 :(得分:1)

对于始终需要g对象的系统,使用Survey是一个很好的解决方案。

对于混合上下文,我会做一个简单的decorator加载相应的Survey对象并将其传递给修饰函数(例如更新kwargs)或类似的东西。甚至将对象放在g中,但仅用于该函数。

像:

@app.route(...)
@load_survey
def do_something(....):
  ...
相关问题