Python Django: обработка URL-адресов с помощью Google App Engine - опубликуйте и получите - PullRequest
0 голосов
/ 17 мая 2009

У меня есть что-то вроде этого:

class CategoryPage (webapp.RequestHandler):
def get(self):
    ** DO SOMETHING HERE **
def post(self):
    ** DO SOMETHING HERE **
    ** RENDER THE SAME AS get(self)

Вопрос в том, как после обработки опубликованных данных я смогу отобразить ту же информацию, что и функция get (self)?

Ответы [ 5 ]

3 голосов
/ 19 мая 2009

Перенаправление, как предполагают другие, имеет некоторое преимущество, но это что-то вроде «тяжелого» подхода. В качестве альтернативы рассмотрите возможность рефакторинга части рендеринга в отдельный вспомогательный метод def _Render(self): и просто завершите оба метода get и post вызовом self.Render().

1 голос
/ 17 мая 2009

Вызвать self.redirect (url), чтобы перенаправить пользователя обратно на ту же страницу через GET. Таким образом, они не будут случайно повторно отправлять форму, если нажмут кнопку «Обновить».

0 голосов
/ 17 мая 2009

Как правило, это не очень хорошая идея, поскольку это может привести к путанице. Вы должны действительно делать все, что хотите, а затем перенаправить их в метод get.

0 голосов
/ 17 мая 2009

На самом деле, ваш код не Django, а веб-приложение (мини-фреймворк Google). Пожалуйста, прочитайте документацию Django: http://docs.djangoproject.com/

Общие представления Django доступны только с app-engine-patch. Помощник не поддерживает их. Вы можете взглянуть на пример проекта app-engine-patch, чтобы узнать больше о Django в App Engine: http://code.google.com/p/app-engine-patch/

0 голосов
/ 17 мая 2009
create_object(request, form_class=FormClass,
        post_save_redirect=reverse('-get-url-handler-',
                                   kwargs=dict(key='%(key)s')))

Я использую вышеупомянутый ярлык django из общих представлений, где вы можете указать редирект после сохранения, получите в вашем случае. В этом фрагменте есть еще несколько примеров. Кстати, я предположил, что вы используете django (помощник или патч) с движком приложения, основываясь на названии вопроса. Если вы используете патч для движка приложения, посмотрите на файл views.py в примере приложения "myapp". Обработчик add_person делает то, что вы ищете.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...