движок приложений google django из формы pyamf

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

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

400 Bad Request Не удалось успешно декодировать тело запроса.

Проследить:

Отслеживание (последний последний вызов):
Файл "C:\Users\Giil\Documents\dev\gae\moviesbuilder\pyamf\remoting\gateway\google.py", строка 79, в сообщении logger=self.logger, timezone_offset=timezone_offset)
Файл "C:\Users\Giil\Documents\dev\gae\moviesbuilder\pyamf\remoting_init_.py", строка 640, в декодировании msg.amfVersion) DecodeError : Деформированный поток (amfVersion=110) Деформированный поток (amfVersion=110)

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

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


person gpasse    schedule 08.11.2010    source источник


Ответы (1)


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

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

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

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))   
person gpasse    schedule 13.11.2010