Використання Django. Part 1

22 Липня 2009
Давно вже обіцяв скрінкаст про Джанго і ось нарешті зробив першу частинку.

Django. Screencast. Part 1. by presidentua from presidentua on Vimeo.

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

  • создание проекта и его настройка
  • админка
  • flatpages, их использование
  • шаблоны
  • установка дополнительных снипетов
  • модель, работа с БД
  • мини-блог сайта
  • работа с формами
  • регистрация обычная
  • регистрация OpenID
  • управления контентом юзера
  • ...
  • настройка все на продакшине
Это некие основные пункты о которых буду рассказывать. Для понимания материала нужно понимание основ Python, Web-разработки. Перед началом нужно скачать и установить Python (я пользуюсь версией 2.5) - www.python.org, и последнюю версию Django - www.djangoproject.com

ТЗ:

разработать сайт улучшеный аналог http://www.gread.org.ua/. Уже существующий сайт был выбран потому что не нужно отдельно верстать, писать яваскрипты и прочее, что для наших целей не важно. GRead - мой личный (тоесть им пользуюсь только я ;) сайт для удобного чтения книг с экрана - его функционал можна посмотреть в маленьком скринкасте - http://vimeo.com/3741451. Он написан на Zend Framework и полные исходники выложены по ссылке: http://tutamc.com/files/gread_pub.zip

Начнем работу

Скопируем с Django каталога на диск файл django-admin.py и создадим проект: django-admin.py startproject gread В результате появилась папка gread с проектом, она содержит файлы:
  • manage.py, нужен для управление проектом (работа с БД, запуск сервера и т.д.)
  • settings.py, в нем хранятся все основные настройки
  • urls.py, в нем основные регулярки для привязки URL к определенным действиям
  • __init__.py
Теперь можем запустить встроенный сервер на 80 порту: manage.py runserver 80 и посмотреть результаты на страничке http://127.0.0.1/

Перейдем к конфигу проекта

В начало конфига добавим такие строчки:
import os def rel(*x):   return os.path.join(os.path.abspath(os.path.dirname(__file__)), *x) * This source code was highlighted with Source Code Highlighter.
Они нужны для того, что некоторые пути Джанго требует задавать абсолютно(особенность архитектуры Python), но это плохо при переносе сайта, поэтому и используется такая функция для изменения относительных путей на абсолютные. Переходим к редактированию конфигурации базы данных... Указываем что будем использовать sqlite3 и указываем имя базы, остальное не изменяем: DATABASE_ENGINE = 'sqlite3' DATABASE_NAME = 'base.db' Дальше в файле настроек много пока не интересных для нас вещей - их пропускаем... А потом необходимо указать путь где будут хранится картинки (как раз и используем написанную вверху функцию) MEDIA_ROOT = rel('media') Теперь указываем web-пути для медиа файлов MEDIA_URL = '/media/' ADMIN_MEDIA_PREFIX = '/media/admin/' Также указываем путь к шаблонам: TEMPLATE_DIRS = (     rel('templates') ) И последняя вещь что нам нужно изменить, так это установленные application, то есть части проекта. Ведь Джанго имеет модульную архитектуру, мы создаем проект, потом добавляем в него разные модули. Добавим к дефолтовому списку модуль администрирования: INSTALLED_APPS = (     'django.contrib.auth',     'django.contrib.contenttypes',     'django.contrib.sessions',     'django.contrib.sites',     'django.contrib.admin', ) На этом завершим настройку, и перейдем к файлу urls.py. В нем нам нужно сначала раскоментировать строчки from django.contrib import admin admin.autodiscover() Которые нужны для того чтобы модуль администрирования перед началом работы искал файлы admin.py, в которых хранится настройка администрирования для модулей - об этом позже. Также видим настройку urlpatterns и она должна иметь такой вид: urlpatterns = patterns('',     (r'^admin/(.*)', admin.site.root), ) Это одна с главных вещей в Django, которая состоит как видим с двух основных частей, с регулярки и с функции на которую передается управление. То есть вначале Django сравнивает текущий URL с регулярками, и если находит совпадение то передает управление на указанную во втором параметре функцию. Теперь мы можем установить наши модули, что указали в файле настроек: manage.py syncdb Нам создадутся автоматически таблицы в базе данных, а также модуль администрирования спросит логин, емайл и пароль администратора. После их указания запускаем сервер и можем посмотреть нашу админку, что будет по адресу: http://127.0.0.1/admin/ На этом пока остановимся... Картинок я не делал, но по всему написанному снял скринкаст который на украинском, но для визуального просмотра знание языка не нужно ;) Исходники, что получили находятся по адресу: http://tutamc.com/sites/default/files/gread_part1.zip Продолжение следует...

Содержание: Часть 1 - http://tutamc.com/node/183 Часть 2 - http://tutamc.com/node/186 Часть 3 - http://tutamc.com/node/194 Часть 4 - http://tutamc.com/node/199

 
 
 
Роман Хоменко aka PresidentUA
mail/jabber: spirt40@gmail.com