Учебники

TurboGears — методы HTTP

Протокол Http является основой передачи данных во всемирной паутине. В этом протоколе определены различные методы извлечения данных из указанного URL. В следующей таблице приведены различные методы http —

Sr.No. Методы и описание HTTP
1

ПОЛУЧИТЬ

Отправляет данные в незашифрованном виде на сервер. Самый распространенный метод.

2

ГОЛОВА

То же, что GET, но без тела ответа

3

СООБЩЕНИЕ

Используется для отправки данных формы HTML на сервер. Данные, полученные методом POST, не кэшируются сервером.

4

ПОЛОЖИЛ

Заменяет все текущие представления целевого ресурса на загруженный контент.

5

УДАЛЯТЬ

Удаляет все текущие представления целевого ресурса, заданного URL

ПОЛУЧИТЬ

Отправляет данные в незашифрованном виде на сервер. Самый распространенный метод.

ГОЛОВА

То же, что GET, но без тела ответа

СООБЩЕНИЕ

Используется для отправки данных формы HTML на сервер. Данные, полученные методом POST, не кэшируются сервером.

ПОЛОЖИЛ

Заменяет все текущие представления целевого ресурса на загруженный контент.

УДАЛЯТЬ

Удаляет все текущие представления целевого ресурса, заданного URL

Создание формы HTML

Давайте создадим форму HTML и отправим данные формы на URL. Сохраните следующий скрипт как login.html

<html>
   <body>
      <form action = "http://localhost:8080/login" method = "get">
         <p>Enter Name:</p>
         <p><input type = "text" name = "nm" /></p>
         <p><input type = "submit" value = "submit" /></p>
      </form>
   </body>
</html>

Данные, введенные в этой форме, должны быть отправлены на URL / login . Теперь создайте функцию контроллера loginpage () и откройте для него вышеуказанную html-страницу.

@expose("hello.templates.login")
   def loginpage(self):
      return {}

Чтобы получить данные формы, предоставьте контроллер login () , который имеет атрибуты формы в качестве своих параметров. Здесь «nm» — имя поля ввода текста в форме входа в систему, то же самое используется в качестве параметра функции login ().

@expose("hello.templates.sample")
   def login(self, nm):
      name = nm
      return {'person':name}

Как видно, данные, полученные из формы входа, отправляются в шаблон sample.html (использовался ранее). Он анализируется механизмом шаблонов Genshi для генерации следующего вывода:

Генши Результат

Метод POST

Когда форма HTML использует метод POST для отправки данных на URL-адрес в атрибуте действия, данные формы не отображаются в URL-адресе. Закодированные данные принимаются в качестве аргумента dict функцией контроллера. Аргумент ** kw ниже — это объект словаря, содержащий данные.

HTML-форма содержит два поля ввода текста.

<html>
   <body>
	
      <form action = "http://localhost:8080/marks" method = "post">
         <p>Marks in Physics:</p>
         <p><input type = "text" name = "phy" /></p>
         <p>Marks in Maths:</p>
         <p><input type = "text" name = "maths" /></p>
         <p><input type = "submit" value = "submit" /></p>
      </form>
		
   </body>	
</html>

Контроллер marks () получает данные формы и отправляет их в шаблон sample.html . Код для root.py выглядит следующим образом —

from hello.lib.base import BaseController
from tg import expose, request

class RootController(BaseController):
   @expose("hello.templates.marks")
   def marksform(self):
      return {}
		
   @expose("hello.templates.sample")
   def marks(self, **kw):
      phy = kw['phy']
      maths = kw['maths']
      ttl = int(phy)+int(maths)
      mydata = {'phy':phy, 'maths':maths, 'total':ttl}
      return mydata

Наконец, шаблон sample.html выглядит следующим образом:

<html>
   <head>
      <title>TurboGears Templating Example</title>
   </head>
	
   <body>
      <h2>Hello, Welcome to TurboGears!.</h2>
      <h3>Marks in Physics: ${phy}.</h3>
      <h3>Marks in Maths: ${maths}.</h3>
      <h3>Total Marks: ${total}</h3>
   </body>
	
</html>

Запустите сервер (если он еще не запущен)

Gearbox server –reload –debug

Введите http: // localhost :: 8080 / marksform в браузере

Образец шаблона

Sample.html отобразит следующий вывод —