Django. Screencast. Part 1. by presidentua from presidentua on Vimeo.
Все Django туториалы хороши для ознакомления, но чтобы сделать полностью рабочий проект на Django размером больше чем блог - такого туториала я не встречал. И посему в серии небольших статтей напишу о приблизительно таком:
- создание проекта и его настройка
- админка
- flatpages, их использование
- шаблоны
- установка дополнительных снипетов
- модель, работа с БД
- мини-блог сайта
- работа с формами
- регистрация обычная
- регистрация OpenID
- управления контентом юзера
- ...
- настройка все на продакшине
ТЗ:
разработать сайт улучшеный аналог 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
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
