【问题标题】:PUT parameters not working in python / google app enginePUT 参数在 python / google 应用程序引擎中不起作用
【发布时间】:2011-05-30 22:06:33
【问题描述】:

我正在使用 python 和谷歌应用引擎上的 webapp 框架开发一个简单的 RESTful web 服务。

基本上我通过 AJAX/jquery 发送所有请求 - 对于 POST,它就像一个魅力,但是当我使用 PUT 发送数据时,参数为空/未处理。

这是我的 PUT:

    $.ajax({
        type: "PUT",
        url: "/boxes",
        data: { name: this.name, archived: this.archived  },
        success: function(msg){
        }
    });

萤火虫说我在说:

Parameter   application/x-www-form-urlencoded
archived    false
name    123112323asdasd

但是使用这个 python 代码:

from google.appengine.ext import webapp
from google.appengine.ext.webapp import util, template
from google.appengine.ext import db
from google.appengine.api.datastore_types import *
from django.utils import simplejson as json

import cgi
import datetime

class BoxHandler(webapp.RequestHandler):

def post(self): #working
    print "test"
    self.response.out.write(self.request.get("name"))

def put(self):
    print "test" #not working
    self.response.out.write(self.request.get("name"))

会回来

test
Status: 200 OK
Content-Type: text/html; charset=utf-8
Cache-Control: no-cache
Expires: Fri, 01 Jan 1990 00:00:00 GMT
Content-Length: 0

所以..嗯,我在这里有什么遗漏吗?

干杯, 马丁

【问题讨论】:

  • 你能把你的 Python 代码放到上下文中吗? self.request 的类型是什么?
  • 插入了整个班级-希望有所帮助-谢谢

标签: python http google-app-engine web-applications put


【解决方案1】:

代码中的put 方法被正确调用,因为如您所见,test 被打印; 不工作的是参数解析,这个问题是webob类中的open issue

您可以尝试解析 request.body 以提取查询字符串。

def put(self):
    print "test"
    name = parse_body_to_extract_your_parameter(self.request.body)
    self.response.out.write(name)

【讨论】:

    猜你喜欢
    • 2018-11-03
    • 2014-07-31
    • 1970-01-01
    • 1970-01-01
    • 2017-03-18
    • 1970-01-01
    • 2015-09-30
    • 2023-04-04
    • 1970-01-01
    相关资源
    最近更新 更多