Главная | Архив новостей | Общение | Площадка | Примеры OpenID
Хостинг Django от «Джино»
Оглавление

Глава 11. Генерация данных, отличных от HTML

Данная глава временно взята из первой версии книги и подлежит корректировке. Вы можете помочь с этим!

Перевод © Попов Руслан <radz • yandex • ru>

Обычно, говоря о разработке веб сайтов, мы имеем в виду генерацию HTML. Конечно, кроме HTML в сфере веба существует ещё много чего. Мы используем веб для распространения информации во всех форматах: RSS, PDF, изображения и так далее.

До сих пор мы рассматривали общий случай создания HTML, но в этой главе мы пойдём другим путём и рассмотрим возможности Django для генерации других видов контента.

Django обладает удобными встроенными инструментами, которые можно использовать для создания контента, отличного от HTML:

  • Рассылки RSS/Atom.

  • Карты сайтов (в XML формате, разработанном Google, который очень помогает поисковым машинам).

Мы исследуем каждый из этих инструментов немного позже, сначала рассмотрим основные принципы.

Основы: представление и MIME-типы

Помните из главы «Представления и привязки URL» это:

Функция представления, или просто представление, является функцией языка Python, которая принимает запрос и возвращает отклик. Этим откликом может быть HTML контент веб страницы, перенаправление на другую страницу, ошибка 404, XML документ, изображение или что-нибудь ещё.

Более формально, функция представления Django должна:

  • Принимать экземпляр класса HttpRequest в качестве первого аргумента.

  • Возвращать экземпляр класса HttpResponse.

Возможность возвращать из представление не-HTML данные лежит в классе HttpResponse, а точнее в аргументе конструктора mimetype. Определяя MIME-тип, мы можем указывать браузеру формат возвращаемых данных.

Например, рассмотрим представление, которое возвращает изображение в формате PNG. Для простоты мы просто читаем файл с диска:

from django.http import HttpResponse

def my_image(request):
    image_data = open("/path/to/my/image.png", "rb").read()
    return HttpResponse(image_data, mimetype="image/png")

Вот так! Если вы замените путь до файла в вызове функции open() на путь до реального изображения, вы можете использовать это очень простое представление для обработки изображений, а броузер будет отображает их корректно.

Ещё следует помнить о том, что объекты HttpResponse работают через стандартный API для работы с файлами. Это означает, что вы можете использовать HttpResponse в любом месте, где требуется обработать файл.

Для того, чтобы увидеть как всё это работает, давайте рассмотрим как Django генерирует CSV.


Увидели ошибку?
Выделите её мышкой и нажмите
Ctrl-Enter
Обработано:
511 49 130 71

Версия книги
1.0 2.0
Версия 2.0 в процессе перевода!

Мой луч
Многообразие света

Полезное
Актуальные вакансии, Python работа для python-разработчиков.


Скачать в формате
CHM от 2 сентября

Заказать PDF файл можно через почту, чат, джаббер. Всего 2WMZ. Содержимое точно соответствует содержимому сайта.
Чем чаще заказываете — тем больше перевожу.

Русская группа

на поддержку перевода
Яндекс Яндекс.Деньги Хочу такую же кнопку
Ускорить процесс перевода!
R130494980980
Z425285133788
E112528079659
U327380922061

Книга помогла реализовать:
Проект «Мой луч»
АРМ УФМС.


Мой вебсайт стоит666 337,31 руб

© 2008-2009 Ruslan Popov @ gmail.com Powered by Django 1.1 beta 1 SVN-11114
Главная | Архив новостей | Общение | Площадка | Примеры OpenID