将整个POST作为JSON对象发送是否可以?

时间:2016-01-08 18:02:58

标签: python json google-app-engine post

我正在使用GAE和python,我使用了很多表单。通常,我的代码看起来像这样:

class Handler(BaseHandler):
    #...
    def post(self):
        name = self.request.get("name")
        last_name = self.request.get("last_name")
        # More variables...
        n = self.request.get("n")
        #Do something with the variables, validations, etc.
        #Add them to a dictionary
        data = dict(name=name, last_name=last_name, n=n)
        info = testdb.Test(**data)
        info.put()

我最近注意到,当表单(变量)中有很多输入时,它会变得太长,所以我想也许我可以发送一个字符串化的JSON对象(可以使用json.loads将其视为python字典)。现在它看起来像这样:

class Handler(BaseHandler):
    #...
    def post(self):
        data = validate_dict(json.loads(self.request.body))
        #Use a variable like this: data['last_name']
        test = testdb.Test(**data)
        test.put()

这短得多。我倾向于以这种方式做事(并停止使用self.request.get("某事")),但我担心我可能会因为客户端需要javascript而无法做到这一点甚至工作。可以这样做,还是在重新安排我的代码之前我应该​​考虑一些事情?

1 个答案:

答案 0 :(得分:4)

您的简短JSON代码变体完全没有问题(现在很少有网络应用程序支持无Javascript支持客户端: - )。

当然,您只需要调整准备POST的客户端代码,从传统的HTML表单到JS更丰富的方法。但是,我很确定你已经意识到这一点 - 只需拼写出来! - )

顺便说一句,这里没有任何特定于App Engine的内容:无论您选择如何部署服务器,都会采用相同的考虑因素。