Google Apps Engine Django Форма Pyamf - PullRequest
       17

Google Apps Engine Django Форма Pyamf

0 голосов
/ 08 ноября 2010

Мой flash-pyamf-gae работает хорошо. Теперь я хотел бы создать классическую форму Django, следуя инструкции Google: http://code.google.com/appengine/articles/djangoforms.html Я сделал, но когда я публикую данные, введенные в мою форму, я получаю следующее сообщение от pyamf:

Неверно сформированный поток (amfVersion = 110)

400 Bad Request Тело запроса было невозможно успешно расшифровать.

Traceback:

Traceback (последний вызов был последним):
файл "C: \ Users \ Giil \ Documents \ DEV \ GAE \ moviesbuilder \ pyamf \ Remoting \ шлюз \ google.py", строка 79, в посте logger = self.logger, timezone_offset = timezone_offset)
файл "C: \ Users \ Giil \ Documents \ DEV \ GAE \ moviesbuilder \ pyamf \ remoting_ INIT _ ру.", строка 640, в декодировании msg.amfVersion) DecodeError: неправильно сформированный поток (amfVersion = 110) неправильно сформированный поток (amfVersion = 110)

Теперь это имеет смысл для меня, потому что то, что я посылаю из моей формы, не является amf. Как я могу справиться с этим?

Примечание: у меня такое чувство, что проблемы возникают из-за моего app.yaml У меня нет специального обработчика, позволяющего приложению по-разному обрабатывать эту форму ... Неверно сформированный поток (amfVersion = 110)

1 Ответ

0 голосов
/ 13 ноября 2010

Я решил проблему по-своему:

Моя форма (пост направлен на другую функцию, а не просто "/", как в примере 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>')

А потомчто мне нужно записать в хранилище данных и отобразить список:

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