Параметры PUT не работают в движке приложения Python / Google - PullRequest
3 голосов
/ 26 декабря 2010

Я работаю над простым веб-сервисом RESTful с python с каркасом webapp на движке приложений Google.

В основном я отправляю все запросы через AJAX / jquery - для POST это работает как чудо, но когда я отправляю данные с PUT, параметры пусты / не обрабатываются.

это мой ПУТ:

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

Firebug сказал, что я ставлю:

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

итак ... хм, есть что-то, чего я здесь не хватает?

ура, Martin

1 Ответ

4 голосов
/ 27 декабря 2010

Метод put в вашем коде вызывается правильно, потому что, как вы можете видеть, печатается test;что не работает, так это разбор параметров, это проблема открытая проблема в классе webob.

Вы можете попытаться проанализировать request.body для извлечения строки запроса.

def put(self):
    print "test"
    name = parse_body_to_extract_your_parameter(self.request.body)
    self.response.out.write(name)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...