URL-адрес tornado и HTML-форма

#python #html #tornado

#python #HTML #tornado

Вопрос:

Я использую tornado и хочу вставить что-то в свой MongoDB из значений в форме HTML.

в HTML-файле у меня есть такая форма:

 <form method="get" > 
 

с 2 текстовыми полями и кнопкой отправки.
и я не знаю, что установить как «действие»

У меня есть класс-обработчик с функцией под названием «post», как показано ниже:

  class MyHandler(tornado.web.RequestHandler):
  def post(self):
     name  = self.get_argument("Name", "")
     index = self.get_argument("Index","")
      .... code for updating MongoDB
 

У меня есть файл с именем BaseUrl.py который содержит:

 (/admin/edit[/]?',MyHandler  )
 

но, похоже, функция «post» в MyHandler не выполняется.
не могли бы вы дать мне несколько советов о том, как правильно настроить мои URL-адреса и действия формы?

Ответ №1:

Измените метод формы на POST, поскольку вы обрабатываете запрос POST:

 <form method="POST" >
 

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

 <form method="POST" action="/admin/edit">
 

Ответ №2:

Ваш метод post не вызывается, потому что ваша форма указывает method="get" . Измените это на method="post" , и это, вероятно, сработает.

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

Комментарии:

1. спасибо, пользователь3763140, но я изменил свой метод на «post», и он по-прежнему не работает, я думаю, что должна быть другая проблема.

2. На какой странице вы находитесь, когда заполняете форму? Если это /admin/edit, вам не нужен атрибут action, если нет, то добавление action="/admin/edit" необходимо.