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

4

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

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("something")),但我担心除了客户端需要javascript才能工作外,可能会错过一些缺点。我可以这样做吗?还是在重新排列代码之前应考虑一些事情?

1个回答

6

你的JSON代码没有问题(今天很少有Web应用程序支持没有Javascript的客户端:-)),只需要将准备POST的客户端端代码从传统的HTML表单适应为JS更丰富的方法即可。但是,我相信你已经意识到这一点--只是想明确说明一下!-)

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


1
我明白我需要一些客户端代码,但制作它并不是很难。这确实节省了Python文件中的大量代码。非常感谢您的回答。 - Yamil Abugattas

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接