Python Django — средство разработки веб-приложений.
Python Django требует постепенного вдумчивого освоения, но я пока что не уверен, что мне имеет смысл этим заниматься — нигде не встречал сравнения с WordPress.
Привожу информацию о Python Django из Википедии:
Django (Джанго, ['dʒæŋɡoʊ]) — свободный фреймворк для веб-приложений на языке Python, использующий шаблон проектирования MVC. Проект поддерживается организацией Django Software Foundation.
Сайт на Django строится из одного или нескольких приложений, которые рекомендуется делать отчуждаемыми и подключаемыми.
Это одно из существенных архитектурных отличий этого фреймворка от некоторых других (например, Ruby on Rails). Один из основных принципов фреймворка — DRY (англ. Don’t repeat yourself)
Также, в отличие от других фреймворков, обработчики URL в Django конфигурируются явно при помощи регулярных выражений, а не выводятся автоматически из структуры моделей контроллеров.
Для работы с базой данных Django использует собственный ORM, в котором модель данных описывается классами Python, и по ней генерируется схема базы данных.
Вот более подробная информация о Python Django:
Программирование на Python. Часть 11. Web-программирование: Django
Завершает цикл о языке программирования Python вводная статья о популярном фреймворке Django. Разумеется, все возможности этого инструмента нельзя описать в рамках одного материала, но говорить о Python и не упомянуть о Django автор счел невозможным.
Сергей Яковлев, консультант, независимый специалист
Введение
Одной из наиболее фундаментальных архитектур для приложений является так называемая архитектура модель-представление-контроллер (Model-View-Controller) или MVC, которая разделяет базовый функционал приложения на ряд отдельных компонентов. При этом достигается главная цель: одна модель на много приложений.
Джанго – это высокоуровневый питоновский Web-фреймворк, который реализован на основе архитектуры MVC. Джанго имеет прозрачный дизайн, дает возможность для оперативной разработки Web-приложений, позволяет разрабатывать динамические Web-сайты.
Отличительные особенности джанго:
- любой запрос обрабатывается программно и перенаправляется на свой адрес(url);
- разделение контента и представления с помощью шаблонов;
- абстрагирование от низкого уровня баз данных.
Джанго-приложение состоит из четырех основных компонентов.
- Модель данных: данные являются сердцевиной любого современного Web-приложения. Модель – важнейшая часть приложения, которое постоянно обращается к данным при любом запросе из любой сессии. Любая модель является стандартным питоновским классом. Объектно-ориентированный маппер (ORM) обеспечивает таким классам доступ непосредственно к базам данных. Если бы не было ORM, программисту пришлось бы писать запросы непосредственно на SQL. Модель обеспечивает облегченный механизм доступа к слою данных, инкапсулирует бизнес-логику. Модель не зависит от конкретного приложения. Данными можно манипулировать даже из командной строки, не используя при этом Web-сервер.
- Представление (view): вьюхи в джанге выполняют разнообразные функции, в том числе контролируют запросы пользователя, выдают контекст в зависимости от его роли. View – это обычная функция, которая вызывается в ответ на запрос какого-то адреса (url) и возвращает контекст.
- Шаблоны: они являются формой представления данных. Шаблоны имеют свой собственный простой метаязык и являются одним из основных средств вывода на экран.
- URL: это всего лишь механизм внешнего доступа к представлениям (view). Встроенные в урлы регулярные выражения делают механизм достаточно гибким. При этом одно представление может быть сконфигурировано к нескольким урлам, предоставляя доступ различным приложениям. Здесь поддерживается философия закладок: урлы становятся как бы самодостаточными и начинают жить независимо от представления.
Для новичков, которые впервые сталкиваются с Джанго и Питоном, может показаться, что тут используется какой-то особый метаязык. Но это не так. Всё, что можно сделать в Питоне, можно сделать и в Джанго: тут есть доступ ко всем стандартным, и не только, питоновским библиотекам, плюс встроенный функционал Джанго.
Проекты, реализованные на Джанго:
http://projects.washingtonpost.com/congress/
http://www.ljworld.com/
http://www.lawrence.com/
Сегодня мы рассмотрим следующие темы.
- Как инсталлировать джанго.
- Первое приложение.
- Подключение базы данных.
- Первое представление.
- Шаблоны.
- Администрирование.
1. Как инсталлировать джанго
Прежде всего, у Вас должен быть установлен питон не ниже версии 2.3. Установить Джанго можно по-разному: можно взять его из локального репозитария, можно взять официальный релиз – в этом случае ищите его тут:
http://www.djangoproject.com/download/
После разархивации в каталоге проекта запустите команду:
setup.py install
Далее нужно сделать проверку, запустить Питон и выполнить команду:
> import django
Проверка версии Джанго:
> django.VERSION
На данный момент официальная стабильная версия – 1.1.1.
2. Первое приложение
Для создания первого приложения зайдем в свой домашний каталог и запустим команду:
django-admin.py startproject mysite
Будет создан подкаталог mysite, где и будет лежать приложение. Заходим в созданный каталог и видим следующую файловую структуру:
mysite/
__init__.py
manage.py
settings.py
urls.py__init__.py – пустой файл, который подключает текущий каталог, как стандартный питоновский пакет.
manage.py – утилита, управляющая сайтом.
settings.py – конфигурация сайта.
urls.py – таблица урлов или таблица для всего контента сайта.
Для того чтобы загрузить наше Web-приложение, запустим команду:
python manage.py runserver
Вывод:
Validating models…
0 errors found.
Django version 1.1, using settings ‘mysite.settings’
Development server is running at http://127.0.0.1:8000/
Quit the server with CONTROL-C.Если теперь в браузере открыть адрес http://127.0.0.1:8000/, то убедимся в том, что приложение запущено: появится стандартное приглашение.
3. Подключение базы данных
Джанго поддерживает следующие серверы баз данных: PostgreSQL, SQLite, MySQL, Microsoft SQL Server, Oracle.
В нашем примере мы выбираем постгрес – не потому, что он лучше, это не имеет принципиального значения. Убедитесь в том, что постгрес уже установлен на Вашей системе, в противном случае его нужно проинсталлировать. После этого в файле settings.py пропишем настройки для постгреса:
DATABASE_ENGINE = ‘postgresql_psycopg2′
DATABASE_NAME = ‘mysite’
DATABASE_USER = ‘postgres’
TIME_ZONE = ‘Europe/Moscow’
LANGUAGE_CODE = ‘ru-ru’Запускаем две команды, которые создают базу данных mysite – постгрес перед этим, естественно, должен быть уже запущен:
psql -d template1 -U postgres -c «DROP DATABASE mysite;»
psql -d template1 -U postgres -c «CREATE DATABASE mysite
WITH OWNER postgres ENCODING=’UNICODE’;»Запускаем команду, которая создает в этой базе около 10 системных таблиц:
python manage.py syncdb
4. Первое представление
Теперь сгенерируем каркас для нашего Web-приложения:
python manage.py startapp People
Внутри каталога mysite появится подкаталог People со следующей структурой:
People/
__init__.py
models.py
tests.py
views.pyДобавим в settings.py последнюю строку, которая добавляет новый путь:
INSTALLED_APPS = (
‘django.contrib.auth’,
‘django.contrib.contenttypes’,
‘django.contrib.sessions’,
‘django.contrib.sites’,
‘mysite.People’
)В settings.py в качестве корневого адреса должен быть:
ROOT_URLCONF = ‘mysite.urls’
Создадим модель Person – стандартный питоновский класс с двумя атрибутами – имя, и-мейл. Файл models.py:
from django.db import models
class Person(models.Model):
name = models.CharField(‘name’, max_length=200)
email = models.EmailField(‘Email’, blank=True)
def __str__(self):
return ‘%s’ % (self.name)После того как добавляется новая модель, её нужно синхронизировать с базой данных. Для этого из командной строки выполняем команду:
python manage.py syncdb
После этого в базе данных появится новая таблица. Нужно заметить, что если Вы после этого будете вносить изменения в уже существующую модель и пытаться синхронизировать эти изменения с базой данных, то джанго никак не будет на это реагировать: в базу добавляются только новые объекты. Для внесения изменений уже придётся пользоваться sql-скриптами на апдэйт конкретных таблиц.
Теперь напишем простейшее представление, которое выведет приглашение-файл views.py:
from django.shortcuts import HttpResponse
from mysite.People.models import Person
def index(request):
html = «<H1>People !!!</H1><HR>»
return HttpResponse(html)Добавим урл – файл urls.py:
from django.conf.urls.defaults import *
urlpatterns = patterns(»,
(r’^People/$’, ‘mysite.People.views.index’)
)Вновь запускаем Web-приложение:
python manage.py runserver
Открываем адрес в браузере и видим приглашение:
http://127.0.0.1:8000/People/
5. Шаблоны
В корне каталога mysite создадим каталог templates. В файле settings.py добавим строку:
TEMPLATE_DIRS = ( "/home/mysite/templates" )Добавленный путь должен быть абсолютным. В добавленный каталог положим файл person.htnl следующего содержания:
<H1>People !!!</H1><HR> <table width=100%> <tr><td colspan="3"> Personal Information </td></tr> <tr valign="top"><td width=30%> <li>Name: {{p.name}}</li> </td> <td width=30%> <li>Email: {{ p.email }}</li> </td></tr> </table>В нашем единственном представлении index мы сделаем изменения: создадим объект Person и передадим его в вызываемый шаблон в качестве параметра. В шаблоне мы берем атрибуты этого параметра с помощью префикса двойных кавычек:
{{p.name}} {{p.email}}Файл views.py после подключения шаблона теперь будет выглядеть так:
from mysite.People.models import Person from django.shortcuts import render_to_response, get_object_or_404 def index(request): person = Person() person.name = 'Alex' person.email = 'Alex@gmail.com' return render_to_response('person.html', {'p': person})После перезагрузки Web-страницы в браузере мы увидим эти атрибуты.
6. Администрирование
Администраторская часть в Джанго по умолчанию отключена. Для её включения добавим последнюю строку в settings.py:
INSTALLED_APPS = ( 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'mysite.People', 'django.contrib.admin' )Для работы с админской частью нужно иметь рутовые права, поэтому нужно вначале создать суперпользователя:
python manage.py createsuperuser
После этого запустим команду:
python manage.py syncdbФайл urls.py с добавленным админским функционалом будет иметь следующий вид:
from django.conf.urls.defaults import * from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', (r'^admin/', include(admin.site.urls)), (r'^People/$', 'mysite.People.views.index') )Запускаем Web-приложение:
python manage.py runserver
Набираем в браузере адрес: http://127.0.0.1:8000/admin/. И попадаем на страницу логина. После ввода логина и пароля суперпользователя открывается админская часть. В ней можно добавлять и редактировать объекты.
Заключение
Итак, сегодня мы узнали, что такое Джанго и почему стоит остановить на нём свой выбор.
Это бесплатный фреймворк, который поддерживает модель MVC, имеет несколько программных интерфейсов к различным базам данных, интуитивно понятный интерфейс администрирования с возможностью расширения, поддержку многоязычности и т. д.
Этот Web-фреймворк обладает рядом преимуществ: Джанго хорошо документирован – сайт разработчиков http://www.djangoproject.com/ тому подтверждение.
Лёгкость установки и настройки помогают значительно экономить время. Малое число внешних зависимостей удобно для пользования: всё, что нам нужно – это Питон.
Сделал в Яндексе запрос WordPress и Django — получил возможность слегка ознакомиться с их сравнением. Мой вывод: у меня нет полугода на серьёзное освоение Django, да и потребности такой нет.
Приглашаю всех высказываться в Комментариях. Критику и обмен опытом одобряю и приветствую. В хороших комментариях сохраняю ссылку на сайт автора!
И не забывайте, пожалуйста, нажимать на кнопки социальных сетей, которые расположены под текстом каждой страницы сайта.
Продолжение тут…