2010-12-26 8 views
3

Ich arbeite an einem einfachen RESTful Webservice mit Python mit dem Webapp-Framework auf der Google App-Engine.PUT Parameter funktioniert nicht in Python/Google App Engine

Grundsätzlich sende ich alle Anfrage über AJAX/jquery - für POST funktioniert es wie ein Charme, aber wenn ich Daten mit PUT sende, sind die Parameter leer/nicht verarbeitet.

das ist mein PUT:

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

firebug said Ich setze:

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

aber diesen Python-Code verwendet:

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")) 

kehren nur

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 

also .. hm, fehlt mir hier irgendwas?

prost, Martin

+0

Können Sie setzen Sie Ihre Python-Code in Zusammenhang? Was ist die Art von Selbstantrag? –

+0

eingefügt die ganze Klasse - hoffe, dass hilft - thx – magegu

Antwort

4

Die put Methode in Ihrem Code, da korrekt aufgerufen wird, wie Sie sehen können, test gedruckt wird; Was nicht funktioniert, ist die Parameteranalyse, dieses Problem ist ein open issue in der webob Klasse.

Sie könnten versuchen, request.body zu analysieren, um die Abfragezeichenfolge zu extrahieren.

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