【问题标题】:Where/How should I do validation and transformations on entities in Google App Engine?我应该在哪里/如何对 Google App Engine 中的实体进行验证和转换?
【发布时间】:2009-11-26 21:51:46
【问题描述】:

在 Ruby on Rails 中,每个模型实体都有一个“validate_on_something”钩子方法,该方法将在实体实际持久化到数据库之前被调用。我想要 Google App Engine 中的类似功能。我知道您可以通过在声明中向它们传递参数来对单个属性进行验证。但是,如果我希望做更多的验证,在模型类声明中是否有一些地方可以做到这一点?

同样,有时实体需要修改才能真正持久化到数据库中。我可能需要在实体实际写入数据库之前修改(转换)实体。实体类声明中是否有允许我这样做的地方?

我知道我可以将这些转换/验证放在课堂之外。但这似乎不是好的 OO 设计。看起来确实应该有一些钩子方法可以在模型中自动调用以满足这些需求。

所以我的问题是,在实体被持久化之前处理实体的验证和转换最合适的方法是什么?

【问题讨论】:

    标签: python validation google-app-engine transformation


    【解决方案1】:

    最佳答案取决于您需要进行何种转换。模型没有通用的 pre-/post-put 方法,但还有其他几种选择:

    • 正如您所提到的,您可以将验证函数传递给 Property 类构造函数
    • 您可以使用以编程方式生成值的自定义属性类,例如this one
    • 您可以使用api call hooks 修改实体,因为它们存储在最低级别。

    【讨论】:

    • 我开始阅读有关派生属性的文章,这似乎是个好主意。谢谢。
    【解决方案2】:

    您是否在原始应用引擎 API 之上使用任何类型的 Web 框架? Rails 是一个非常高级的框架。您是否研究过 Django 或任何其他 Web 框架?您可能会发现它们比原始 appengine 实体更接近轨道。

    或者,如果您想要更低级别的东西,请查看这篇文章 hooks

    【讨论】:

    • 不,不幸的是,只是原始应用引擎。我应该看看 Django,但当时我只是想入门。 :) 关于钩子的文章很有趣。但我没有看到它提到你可以连接到什么东西,知道在哪里可以找到吗?
    猜你喜欢
    • 1970-01-01
    • 2023-03-21
    • 2011-01-27
    • 2012-07-09
    • 1970-01-01
    • 2015-01-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多