2010-11-08 5 views
0

Mon flash-pyamf-gae fonctionne bien. Maintenant, je voudrais créer un formulaire Django classique en suivant le tutoriel Google: http://code.google.com/appengine/articles/djangoforms.html je l'ai fait, mais quand je poste les données saisies dans ma forme que je reçois le message suivant PyAMF:google apps moteur django formulaire pyamf

Malformed stream (amfVersion=110)

400 Bad Request The request body was unable to be successfully decoded.

Traceback:

Traceback (most recent call last):
File "C:\Users\Giil\Documents\dev\gae\moviesbuilder\pyamf\remoting\gateway\google.py", line 79, in post logger=self.logger, timezone_offset=timezone_offset)
File "C:\Users\Giil\Documents\dev\gae\moviesbuilder\pyamf\remoting_init_.py", line 640, in decode msg.amfVersion) DecodeError: Malformed stream (amfVersion=110)Malformed stream (amfVersion=110)

Maintenant que faire sens pour moi parce que ce que j'envoie de ma forme n'est pas amf. Comment puis-je faire face à cela?

Note: J'ai le sentiment que les problèmes viennent de mon app.yaml Je n'ai pas gestionnaire spécial à dire l'application de traiter cette forme différemment ... flux malformée (amfVersion = 110)

Répondre

0

Je résolus le problème ma façon:

ma forme (le poste est dirigé vers une autre fonction et non pas seulement «/» comme dans l'exemple google):

class Projects(webapp.RequestHandler): 
    def get(self): 
     self.response.out.write('<html><body>' 
           '<form method="POST" ' 
           'action="/ProjectsPage">' 
           '<table>') 
     self.response.out.write(ProjectForm()) 
     self.response.out.write('</table>' 
           '<input type="submit">' 
           '</form></body></html>') 

et puis ce que je dois écrire au dataStore et afficher la liste:

class ProjectsPage(webapp.RequestHandler): 
    #getting data and saving 
    def post(self): 
     data = ProjectForm(data=self.request.POST) 
     if data.is_valid(): 
      # Save the data, and redirect to the view page 
      entity = data.save(commit=False) 
      entity.added_by = users.get_current_user() 
      entity.put() 
      self.redirect('/projects.html') 
     else: 
      # Reprint the form 
      self.response.out.write('<html><body>' 
            '<form method="POST" ' 
            'action="/">' 
            '<table>') 
      self.response.out.write(data) 
      self.response.out.write('</table>' 
            '<input type="submit">' 
            '</form></body></html>') 
    #display list of projects 
    def get(self): 
     query = db.GqlQuery("SELECT * FROM Project WHERE added_by=:1 ORDER BY name",users.get_current_user()) 
     template_values = { 
      'projects': query, 
     } 
     path = os.path.join(os.path.dirname(__file__), 'templates/projects.html') 
     self.response.out.write(template.render(path, template_values)) 
Questions connexes