Как мне обработать несколько форм отправки с одним и тем же обработчиком?(Google Engine Engine-Python) - PullRequest
1 голос
/ 05 февраля 2011

В AdminPage Я создал несколько форм для редактирования полей формы в базе данных;все формы относятся к action=/adminpage

<form name="submit_form" action="/adminpage" method="post">

, затем я создал def post(self): для обработки каждой формы, например

def post(self):
   ....
   handle first form

def post(self):
    ...
    handle second form

и т. д.

Очевидно, что это неправильно, потому что каждый def post(self): работает сам по себе;только когда я добавляю другие, они не работают.

Я искал, как передать имя формы сценарию, но не смог найти ничего полезного.Что вы предлагаете обрабатывать каждую форму, не создавая отдельный обработчик для каждого?Спасибо!

Ответы [ 2 ]

2 голосов
/ 05 февраля 2011

Вы можете добавить скрытый элемент ввода в каждую форму, а затем использовать значение этого поля, чтобы различать различные формы на странице. E.g.:

<input type="text" name="form_name" value="submit_form" style="display:none"></input>

И затем вы можете использовать значение form_name в вашем сообщении (), чтобы выяснить, какая форма отправляется.

2 голосов
/ 05 февраля 2011

Прежде всего, что плохого в том, чтобы иметь отдельный обработчик для каждой формы?Если вы решили, что хотите пойти по этому пути, у вас есть пара вариантов.Вы можете либо проверить URL реферала, чтобы увидеть, с какой страницы пришел пользователь, и определить, что было отправлено.Другой вариант заключается в размещении скрытого поля в каждой форме, в котором указывается, какая форма отправляется.

Обратите внимание, что с помощью любого из этих методов злоумышленник может легко запустить систему, чтобы заставить вас думать, что вы обрабатываетедругой тип формы.На ваше усмотрение, является ли это проблемой.Если вы хотите использовать один и тот же обработчик для нескольких форм, просто не смешивайте формы, выполняющие привилегированные действия.

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