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

Глава 1. Введение в Django

Перевод © Попов Руслан <ruslan.popov • gmail>

Данная книга посвящена Django, среде[1] WEB[2] разработки, которая позволяет сэкономить время и превращает работу в развлечение. Используя Django, вы можете с минимальными усилиями создавать и обслуживать высококачественные приложения.

Разработка любого приложения — это многогранный процесс. Со своей лучшей стороны — это творческая работа, а с худшей — это нудное написание кода. Django позволяет сфокусироваться на творческой части разработки, облегчая её нудную часть. Для этого разработчику предоставляются высокоуровневые шаблоны, готовые решения для стандартных задач и явные соглашения о том как надо решать проблемы. В то же время Django старается не вмешиваться в ваш процесс разработки, позволяя вам выполнять необходимую работу вне своей среды.

Цель данной книги — сделать вас экспертом по Django. Книга сфокусирована на двух вещах. Первое, мы подробно объясним, как работает Django и как создавать приложения с её помощью. Второе, там где это необходимо, мы обсудим высокоуровневую концепцию, отвечая на вопрос «Как я могу эффективно применять эти инструменты в своих проектах?» Читая эту книгу, вы получите навыки необходимые для разработки мощных приложений с простым поддерживаемым кодом.

Что такое среда разработки?

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

Для того, чтобы ответить на этот вопрос давайте рассмотрим дизайн приложения написанного на языке Python без использования среды разработки. На протяжении всей книги мы будем использовать данный подход, чтобы показать вам основные способы выполнить работу без вспомогательных средств, в надежде, что вы разберётесь почему эти средства так полезны. (Также важно знать как можно решить задачу на низком уровне, так как высокий уровень (вспомогательные средства) не всегда доступны. И очень важно то, что знание почему что-то работает именно так, а не иначе, делает вас опытнее.

Одним из простых, наиболее прямолинейным способом создать с нуля вебприложение на языке Python является использование стандарта Common Gateway Interface (CGI), который был популярен, начиная с 1998 года. Кратко рассмотрим как это работает: создаётся скрипт на языке Python, который выводит HTML, скрипт сохраняется на веб сервере в файле с расширением .cgi, затем к скрипту можно обращаться через веб браузер. Вот и всё.

Ниже приведён простой CGI скрипт, написанный на языке Python, который отображает десять наиболее свежих книг из базы данных. Не беспокойтесь о деталях, просто рассмотрите как он работает:

#!/usr/bin/env python

import MySQLdb

print "Content-Type: text/html"
print
print "<html><head><title>Книги</title></head>"
print "<body>"
print "<h1>Книги</h1>"
print "<ul>"

connection = MySQLdb.connect(user='me', passwd='letmein', db='my_db')
cursor = connection.cursor()
cursor.execute("SELECT name FROM books ORDER BY pub_date DESC LIMIT 10")
for row in cursor.fetchall():
    print "<li>%s</li>" % row[0]

print "</ul>"
print "</body></html>"

connection.close()

Во-первых, согласно требованиям CGI, код выводит строку «Content-Type», затем пустую строку. Скрипт выводит необходимые HTML теги, подключается к базе данных и выполняет запрос для получения имён последних десяти книг. Обрабатывая результат запроса, скрипт создаёт ненумерованный список имён. Наконец, скрипт закрывает HTML теги и закрывает соединение с базой данных.

Для одиночной динамической страницы, подобной этой, методика «написать всё с нуля» не всегда плоха. Во-первых, этот код прост для понимания даже неопытным разработчиком и его легко установить на «боевую»[3] систему — просто сохранить в файл с расширением .cgi и зайди браузером.

Но несмотря на свою простоту, данный подход имеет ряд проблем и недостатков. Задайте себе эти вопросы:

  • Что произойдёт, если потребуется обеспечить работу множества компонентов вашего приложения с базой данных? Несомненно, что код для подключения к базе не должен быть скопирован в каждый отдельный CGI скрипт. Придётся вынести этот код в общую библиотеку функций.

  • Действительно ли разработчик должен беспокоиться о выводе строки «Content-Type» и помнить о необходимости закрывать соединение с базой данных? Такие вещи снижают производительность разработчика и увеличивают вероятность появления ошибок в коде. Такими задачами должна заниматься некая общая инфраструктура.

  • Что произойдёт, если этот код будет использоваться во множестве сред, каждая со своей базой данных и логином? В этом случае потребуется вводить некоторую конфигурацию, специфичную для среды исполнения.

  • Что произойдёт, если дизайнер, который не имеет опыта разработки на языке Python, пожелает поменять вид страницы? Один неверный символ может уронить целое приложение. В идеале, при отображении страницы, логика страницы — получение названий книг из базы данных — должна быть отделена от вывода HTML. В этом случае дизайнер может вносить необходимые изменения в HTML без влияния на всё остальное.

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



[1] Здесь и далее слово Django будет рассматриваться как слово женского рода, от «среда».

[2] Здесь и далее речь будет идти о приложениях для Интернет, т.е., о сайтах.

[3] Здесь и далее этот термин подразумевает production (FIXME) WEB-сервер.


Увидели ошибку?
Выделите её мышкой и нажмите
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