要在Flask上建立动态的用户更新路线,我使用了__dict__
来遍历用户Flask SQLAlchemy对象:
parameters = ['name'] # Valid parameters after the Regex filter was applied
for parameter in parameters:
user.__dict__[parameter] = request.form.get(parameter)
我这样做是为了避免使用ifs
。为了确保parameters
中仅存在有效参数,我应用了Regex模式来过滤request
中针对用户路由的有效参数,并在doc字符串中记录了这方面。
我要问是否使用__dict__
遍历Flask SQLAlchemy对象是否不好?因为如果我打印user.__dict__
,我会收到所有参数,即使那些不在Regex上的参数也是如此过滤器,ig,密码,创建日期等;并且永远不要通过此路由进行更新。
我发现另一个approach使用SQLAlchemy中的get all column,但我认为最后它与我使用的方法类似...
糟糕:实施的路由可以使用同一路由更新来自用户或所有用户的特定属性
答案 0 :(得分:0)
我建议您调查marshmallow-sqlalchemy来管理这类事情。我发现很少有问题的用例,__dict__
是最好的解决方案。
以下是使用它的示例应用程序:How do I produce nested JSON from database query with joins? Using Python / SQLAlchemy