Основы использования фреймворка django при построении Web-сайта

В статье рассмотрены вопросы анализа, общей организации, и структуры фреймворка django, а также процесс начального моделирования и введения в действие базиса для будущего полнофункционального Web-сайта.

Введение

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

Абстрагируясь от низкоуровневого процесса Web-строительства, django позволяет разработчикам быстро создавать основанные на базах данных динамичные Web-сайты. Одним из основных преимуществ django является переносимость созданных на ее основе продуктов в силу переносимости их базиса – языка высокого уровня Python.

Произносится слово django мягко, без выраженного звука «д», как «жан-го».

Django включает в себя Model View Controller (MVC) – инструмент, позволяющий разделить общую архитектуру на отдельные части. При этом управляющая логика разделена на три отдельных компонента так, что модификация одного из них оказывает минимальное воздействие на другие части. К таким компонентам относят разделяемые данные, логику и слои визуализации (view layers). В общем случае такая концепция позволяет разделить разработку информационного наполнения на уровне базы данных и разработку Web-страниц.

Django базируется на классе Python django.db.models.Model, который задает данные модели так, чтобы они были пригодны к использованию на Web-сайтах. Эти данные определяются соответствующими атрибутами объектов, которые сохраняются в базе данных в процессе работы. При создании сайта создается подкласс класса Model и добавляется поле членов в класс для задания специфических данных.

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

Изменение отображения содержимого в зависимости от принимаемого URL-запроса является многоступенчатым процессом. Когда django-сервер получает URL-запрос, он парсит его и, используя предыдущие установки шаблонов, определяет, какой участок кода Python будет выполняться для требуемого отображения.

Парсер шаблонов в django позволяет самостоятельно настраивать свои шаблоны, которые используют функции отображения Web-страниц при построении ответа на URL-запросы. Это позволяет разработчикам Python сфокусироваться на создании данных, которые будут отображаться, а программистам HTML – сфокусироваться на дизайне Web-страниц.


Конфигурирование settings.py файла

Основным конфигурационным файлом при построении Web-сайта на django является файл settings.py. При создании каждого нового проекта django автоматически добавляет в него новый файл settings.py в корневую директорию проекта. Файл содержит конфигурационные опции для баз данных, установленных приложений и другие многочисленные параметры. Обычно этот файл видоизменяется при задании глобальных конфигурационных свойств Web-сайта.

Для доступа к этому файлу необходимо импортировать настройки, как в приведенном ниже примере:

from django.conf import settings.py
if settings.MY_CUSTOM_SETTING:

Примечание. Не надо пытаться редактировать настройки файла settings.py «на лету», путем правки Python кода. Это может иметь непредвиденно плохой или неопределенный результат.


Использование утилиты manage.py

Любой файл, автоматически добавляемый к проекту, создается утилитой manage.py. Кроме того, эта утилита используется в любых задачах, связанных с разработкой, администрированием и тестированием проекта. Ниже приведен основной перечень команд, используемых manage.py в своей работе:

  • startproject – создание нового django-проекта. Создается директория со всеми необходимыми файлами проекта;
  • startapp – создание нового приложения для django-проекта;
  • syncdb – синхронизация данных модели проекта с SQL-базой данных, поддерживающей проект;
  • runserver – старт сервера разработки;
  • shell – запуск оболочки интерпретатора Python для доступа к данным проекта, включая и базу данных;
  • dbshell – запуск SQL-клиента командной строки для доступа к базе данных.

Как правило, утилита используется из корневой директории проекта. Более подробно об этой утилите можно узнать на сайте http://www.djangoproject.com/documentation/django-admin.


Сервер разработки django

Django поставляется с встроенным легким HTTP-сервером для тестирования разрабатываемых проектов. После установки django не нужно будет искать и разворачивать какой-либо иной Web-сервер для тестирования кода. Встроенный сервер тратит мало системных ресурсов и очень функционален для апробации нового сайта.

Для старта сервера необходимо, находясь в корневой директории проекта, выполнить команду: python manage.py runserver.

Примечание. Для остановки сервера нажмите комбинацию клавиш Ctrl+Break или Ctrl+C.


Административный интерфейс

Django поставляется с удобным административным интерфейсом, позволяющим создавать, изменять и просматривать данные в административном контексте. Доступ к административному интерфейсу возможен из Web-браузера при введении URL вида: http://127.0.0.1:8000/admin/. При этом открывается окно, как показано на рисунке 4.

Рисунок 4.
Рисунок 4.

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


Установка фреймворка django

До начала установки django необходимо убедиться в том, что в системе установлена версия Python 2.3 или выше. Получить Python можно по адресу http://www.python.org/download. После этого необходимо убедиться, что в системе установлена СУБД MySQL. Наличие какой бы то ни было СУБД в системе не является обязательным условием для установки и настройки django. В этой статье будет использоваться в качестве примера СУБД MySQL, поэтому будем считать, что она уже установлена и настроена.

Django можно получить с сайта разработчиков и воспользоваться либо официальным релизом, либо версией для разработчиков. В первом случае нужно скачать дистрибутив с http://www.djangoproject.com/download, а во втором – воспользоваться SVN следующим образом:

svn co http://code.djangoproject.com/svn/django/trunk django_src

После этого следует запустить интерпретатор Python и выполнить команду:

import django django.VERSION.

Выполнение последней команды должно показать в консоли интерпретатора вывод информации о версии django, что свидетельствует о правильном процессе установки.

Во втором случае нужно распаковать скачанный тарбол командой:

tar xzvf Django-version.tar.gz

затем выполнить серию команд:

cd Django-version
python setup.py install
sudo python setup.py install (linux)
import django
django.VERSION

В результате в консоли интерпретатора мы должны получить номер версии фреймворка. (рисунок 1), что тоже свидетельствует о нормальном ходе процесса.

Рисунок 1.
Рисунок 1.

Создание первого проекта на django

Рассмотрим создание простого проекта, производя все действия по конфигурированию из командной строки системы Ubuntu Linux.

Для начала необходимо перейти в ту поддиректорию, где будет находиться сам проект.

Создайте директорию с именем iFriends (так будет называться проект примера).

Перейдите во вновь созданную директорию и там выполните команду:

python django-admin.py startproject iFriends.

Эта команда создаст новый проект и поместит в него все необходимые файлы. Затем следует запустить HTTP-сервер разработки.


Запуск сервера разработки

Для запуска HTTP-сервера, обеспечивающего разработку проекта, исполните команду:

python manage.py runserver

Правильный процесс запуска ознаменуется соответствующей строкой в консоли и записью о нулевом количестве ошибок.

Примечание. Если при выполнении этой команды возникнет ошибка, говорящая о том, что порт для сервера уже занят другим приложением (рисунок 2), то повторите команду, назначив другой порт HTTP-серверу: python manage.py runserver 0.0.0.0:9000, что заставит сервер прослушивать все имеющиеся в системе ip-адреса по порту 9000.

Рисунок 2.
Рисунок 2.

Доступ к серверу можно проверить при переходе в браузере по URL: http://127.0.0.1:8000/ или (в последнем случае) http://127.0.0.1:9000/.

Если все было сделано правильно и не было ошибок, то в браузере можно будет увидеть картинку, как на рисунке 3.

Рисунок 3.
Рисунок 3.

Создание и конфигурирование базы данных

До начала конфигурирования БД необходимо обеспечить в MySQL поддержку именования таблиц буквами верхнего регистра. Для этого надо открыть файл <django installation path>/django/db/backends/__init__.py и в него добавить:

uses_case_insensitive_names = True

Конфигурирование БД состоит из ряда SQL-директив, написанных ниже:

CREATE DATABASE iFriendsDB;
USE iFriendsDB;
CREATE USER 'dAdmin'@'localhost' IDENTIFIED BY 'test';
GRANT ALL ON *.* TO 'dAdmin'@'localhost';

После создания пользовательской учетной записи и базы данных для django, нужно сконфигурировать файл settings.py для задания базовых настроек. Этот файл представляет собой скрипт на языке Python, который в процессе своего выполнения сконфигурирует все основные параметры проекта. Задайте в файле settings.py следующие установки:

DATABASE_ENGINE = 'mysql'
DATABASE_NAME = 'iFriendsDB'
DATABASE_USER = 'dAdmin'
DATABASE_PASSWORD = 'test'
DATABASE_HOST = ''
DATABASE_PORT = ''

Синхронизация данных проекта с базой данных

Процесс синхронизации создает в базе данных все необходимые таблицы для поддержки проекта. Внесите в settings.py следующие изменения:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
)

Для синхронизации данных проекта с базой данных нужно выполнить определенные шаги в следующем порядке.

Вначале остановите HTTP-сервер разработки. Затем перейдите в рутовую директорию проекта iFriends. Находясь там, введите команду в консоли:

python manage.py syncdb.

В появившейся подсказке задайте административную учетную запись и пароль для Web-сайта. После завершения этой процедуры django будет иметь возможность корректно использовать аутентификацию, сессии, и содержимое таблиц базы.


Установка приложения

Теперь нужно установить приложение, которое будет использовать настроенные и синхронизированные данные в СУБД. В качестве примера зададим имя этому приложению как People. Оно должно хранить данные о пользователях создаваемого сайта.

Находясь в рутовой директории проекта iFriend, выполните команду в консоли:

python manage.py startapp People

Эта команда создаст новое приложение с именем People, что выразится в появлении новой поддиректории People внутри iFriend и серии файлов __init__.py models.py и views.py.

Далее нужно создать класс Person в модели People путем изменения скрипта models.py. Нужно добавить в файл следующие строки:

from django.db import models

class Person(models.Model):
    name = models.CharField('name', maxlength=200)
    email = models.EmailField('Email', blank=True)
    headshot = models.ImageField(upload_to='img', blank=True)
    text = models.TextField('Desc', maxlength=500, blank=True)
    def __str__(self):
        return '%s' % (self.name)

Активизация модели Person

Для активизации модели Person нужно внести некоторые изменения в файл iFriends\settings.py. В раздел INSTALLED_APPS внести:

	INSTALLED_APPS = (
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.sites',
        'iFriends.People',
)

затем сохранить файл и выполнить синхронизацию с базой данных:

python manage.py syncdb

процесс синхронизации создаст необходимые таблицы в базе iFriends для приложения People.


Добавление данных, используя API

Здесь будет рассмотрен процесс использования django shell и интерфейса базы данных для объекта Person в таблицу People. Django shell представляет собой Python shell, дающую возможность получить доступ к API базы данных, используя при этом django как посредника.

Нужно перейти в рут-каталог проекта iFriends. Затем открыть django shell командой:

python manage.py shell

после чего импортировать класс Person из People-пакета:

from iFriends.People.models import Person

Затем создать объект Person с именем “p”:

p = Person(name="<your name>", email="<your eMail>")

и сохранить его:

p.save()

Далее, используя функцию Person.objects.all(), проверить факт создания этого объекта:

lst = Person.objects.all()
print lst

После этого в консольном выводе можно получить информацию обо всех персонах, работающих на сайте.


Конфигурирование URLConfFile

Теперь рассмотрим конфигурирование URLConfFile, который задает порядок доступа к установленному приложению через Web. URLConfFile представляет собой Python-скрипт, который описывает специфические просмотрщики или «вьюхи» (views), доступные через вводимые в браузере URL. Когда django-сервер получает такой URL-запрос, он парсит запрос на шаблоны, содержащиеся в URLConfFile. Потом этот запрос транслируется в специфическую Python-функцию, которая и исполняет views.py-файл.

Местонахождение URLConfFile задается в параметре ROOT_URLCONF файла settings.py. По умолчанию местонахождением является рут-каталог проекта.

Отредактируем файл iFriends\urls.py, внеся в строку с urlpatterns следующий код:

urlpatterns = patterns('',
    (r'^People/$', 'iFriends.People.views.index')
)

Затем файл можно сохранить.

После редактирования URLConfFile нужно добавить «вьюхи» (views) в приложение.


Создание простого view

Откроем для редактирования iFriends/People/views.py. Добавим в этот файл следующий код:

from django.shortcuts import HttpResponse
from iFriends.People.models import Person

def index(request):
    html = "<H1>People</H1><HR>"
    return HttpResponse(html)

После этого файл можно сохранить. Затем надо сменить каталог на корневой для проекта iFriends и там дать команду на запуск HTTP-сервера разработки:

 python manage.py runserver.

В браузере перейти по URL: http://127.0.0.1:8000/People ,где можно будет увидеть Web-страницу, как на рисунке 5.

Рисунок 5.
Рисунок 5.

Таким образом, был создан django-проект с именем iFriends, в рамках которого сконфигурирован доступ в СУБД MySQL. Затем создано приложение с именем People, добавлен класс Person, а в базу был внесен объект Person. Затем было сконфигурировано поведение URL-парсера для поддержки «вьюхи» и добавлен необходимый код, который в рамках этой «вьюхи» отображал список объектов класса Person.


Выводы

В статье рассмотрены вопросы использования фреймворка django как инструмента построения Web-сайта. Последовательно дан общий обзор django, понятий моделей, шаблонов и просмотрщиков («вьюх»). Рассмотрен процесс установки и настройки django, ее конфигурационных файлов. В пошаговом режиме проведен экскурс через весь процесс создания простой, но работоспособной Web-страницы с использованием django. Весь материал снабжен примерами и исходным кодом на языке Python.

Комментарии

developerWorks: Войти

Обязательные поля отмечены звездочкой (*).


Нужен IBM ID?
Забыли Ваш IBM ID?


Забыли Ваш пароль?
Изменить пароль

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Профиль создается, когда вы первый раз заходите в developerWorks. Информация в вашем профиле (имя, страна / регион, название компании) отображается для всех пользователей и будет сопровождать любой опубликованный вами контент пока вы специально не укажите скрыть название вашей компании. Вы можете обновить ваш IBM аккаунт в любое время.

Вся введенная информация защищена.

Выберите имя, которое будет отображаться на экране



При первом входе в developerWorks для Вас будет создан профиль и Вам нужно будет выбрать Отображаемое имя. Оно будет выводиться рядом с контентом, опубликованным Вами в developerWorks.

Отображаемое имя должно иметь длину от 3 символов до 31 символа. Ваше Имя в системе должно быть уникальным. В качестве имени по соображениям приватности нельзя использовать контактный e-mail.

Обязательные поля отмечены звездочкой (*).

(Отображаемое имя должно иметь длину от 3 символов до 31 символа.)

Нажимая Отправить, Вы принимаете Условия использования developerWorks.

 


Вся введенная информация защищена.


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Open source, Linux
ArticleID=489660
ArticleTitle=Основы использования фреймворка django при построении Web-сайта
publish-date=05132010