gpt4 book ai didi

python - Google App Engine 中的验证逻辑

转载 作者:行者123 更新时间:2023-11-28 16:52:47 24 4
gpt4 key购买 nike

我正在编写的部分应用的结构大致如下:

class PostModel(db.Model):
some_property = db.WhateverProperty()
some_other_property = db.WhateverProperty()

class PostHandler(webapp.RequestHandler):
def get(self):
#code to generate form
def post(self):
#code to validate input from form
#create entity and put() it to datastore if input passes the validation

现在,根据我对 MVC 的了解,这个验证逻辑应该在模型中,对吧?那么,我应该改为这样做吗?

class PostModel(db.Model):
some_property = db.WhateverProperty()
some_other_property = db.WhateverProperty()
@staticmethod
def validation_logic(form_input):
#throw exceptions if validation fails
@staticmethod
def save_to_datastore(form_input):
#this would assume data already passed validation
#create entity and save it

class PostHandler(webapp.RequestHandler):
def get(self):
#code to generate form
def post(self):
try:
PostModel.validation_logic(form_input)
except CustomException,e:
self.redirect('/errorpage?msg='+e.msg)
PostModel.save_to_datastore(form_input)

这是好的 MVC 形式吗?

最佳答案

有几种方法可以做到这一点。一些表单库将完成大部分基本验证,但当您拥有更复杂的数据时,不可避免地会遗漏一些内容。

我认为将值字典传递给模型的 @classmethod 并让它验证数据是个好主意。我通常有一个像您的 save_to_datastore() 这样的类方法,主要用于验证和组装要保存的实体,而不是在处理程序中执行。我更喜欢在处理程序数据存储区中没有特定的东西。例如:使用模型类方法进行查询,而不是直接在处理程序中创建查询。它让你认为模型是一个 api,更容易维护和跟踪索引等。

关于python - Google App Engine 中的验证逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5120659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com