|
Оглавление
|
Содержание
Перевод © Попов Руслан <ruslan.popov • gmail>
HTML формы являются основой интерактивных веб-сайтов, от простой
формы поиска Google и вездесущих форм для комментирования в блогах
до сложных уникальных интерфейсов для ввода данных. Эта глава
рассматривает возможности Django по обработке форм, проверки
переданных значений. Здесь мы рассмотрим объекты
Мы впервые коснулись объектов from django.http import HttpResponse
def hello(request):
return HttpResponse("Hello world")
Таблица 7.1. Информация об URL
Всегда используйте эти атрибуты/методы вместо прямого вписывания URL в ваши представления. Такой подход делает код более гибким и его можно будет повторно использовать в других местах. Простейший пример: # BAD!
def current_url_view_bad(request):
return HttpResponse("Welcome to the page at /current/")
# GOOD
def current_url_view_good(request):
return HttpResponse("Welcome to the page at %s" % request.path)
Атрибут request.META является словарём, который содержит все доступные HTTP заголовки текущего запроса, включая IP адрес посетителя и информацию об его браузере (название и версию). Следует отметить, что полный список доступных заголовков зависит от того, какие заголовки были посланы браузером посетителя и какие заголовки были установлены веб-сервером. Перечислим несколько стандартных ключей этого словаря:
Следует отметить, что так как request.META
является обычным словарём языка Python, вы получите исключение
# BAD!
def ua_display_bad(request):
ua = request.META['HTTP_USER_AGENT'] # Might raise KeyError!
return HttpResponse("Your browser is %s" % ua)
# GOOD (VERSION 1)
def ua_display_good1(request):
try:
ua = request.META['HTTP_USER_AGENT']
except KeyError:
ua = 'unknown'
return HttpResponse("Your browser is %s" % ua)
# GOOD (VERSION 2)
def ua_display_good2(request):
ua = request.META.get('HTTP_USER_AGENT', 'unknown')
return HttpResponse("Your browser is %s" % ua)
Мы рекомендуем вам написать небольшое представление, которое будет отобрадать все данные из request.META, так вы сможете узнать что там есть. Вот так может выглядеть ваше представление: def display_meta(request):
values = request.META.items()
values.sort()
html = []
for k, v in values:
html.append('<tr><td>%s</td><td>%s</td></tr>' % (k, v))
return HttpResponse('<table>%s</table>' % '\n'.join(html))
В качестве упражнения, вы можете преобразовать данный код для использования возможностей шаблонной системы Django, а не использовать «сырой» HTML.
Кроме основных метаданных о запросе,
Словарные объекты
Когда мы говорим, что request.GET и
request.POST являются
«словарными» объектами, мы подразумеваем, что
они ведут себя как обычные словари языка Python, но
технически не являются словарями. Например,
request.GET и request.POST
обладают методами Так в чём разница? В том, что эти объекты обладают дополнительными методами, которых нет у обычных словарей. Мы ещё остановимся на этом. Вы можете встретиться с подобным термином —
«файловые объекты» — такие объекты
обладают несколькими основными методами, подобными
POST данные обычно получают из HTML <form>, а GET данные могут приходить как от форм, так и из URL. |
Увидели ошибку?
Выделите её мышкой и нажмите
-
Обработано:
510
49
130
71
Версия книги
1.0
2.0
Версия 2.0 в процессе перевода!
Мой луч
Многообразие света
Полезное
Актуальные вакансии,
Python работа
для python-разработчиков.
Скачать в формате
CHM от 2 сентябряЗаказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта. Чем чаще заказываете — тем больше перевожу. Русская группа
Ускорить процесс перевода!
R130494980980
Z425285133788 E112528079659 U327380922061 Книга помогла реализовать:
|
| © 2008-2009 Ruslan Popov @ gmail.com | Powered by Django 1.1 beta 1 SVN-11114 |