Потребовалось сделать небольшой проект - интернет-магазин на django.
Остановил свой выбор на решении django-lfs.
Беглый осмотр исходников навел на мысль о том, что поддержки новой django 1.4 пока нет - взять хотя бы структуру проекта. Она явно не соответствует той структуре , которую создает django_admin.
Также вижу, что в settings.py не все так, как принято теперь в дефолтном джанго-приложении.
Есть соблазн использовать django 1.3, но спортивный интерес и желание разобраться со всеми проблемами совместимости, которые вылезут, подталкивает начинать именно с 1.4...
Итак, что у нас имеется?
-
Linux Debian Lenny 32 bit
-
Python 2.7
-
virtualenv
-
django-lfs-installer-0.7.4.tar.gz
-
MySQL
Сразу готовимся с будущему копипасту )) Создаем фейковый проектик из-под django 1.4 для того, чтобы под рукой иметь эталон. Очень будет полезно для приведения lfs-ного settings к потребному для 1.4 виду. Сделали? Двигаемся дальше.
Далее создадим бд (предполагается что сервер mysql уже крутится на сервере). Логинимся на локальный mysql-сервер под рутом субд и выполняем sql:
--создание базы данных
create database shop_db;
--создание пользователя и выдача ему всех прав на эту бд
grant all privileges on shop_db.* to shop_admin@localhost identified by 'very_hard_to_brake_password' with grant option;
Начнем.
Фазу установки виртуального окружения , распаковки архива, пожалуй , опущу. Отмечу только, что перед синхронизацией БД (syncdb) не забываем прописать настройки доступа к СУБД в settings.py. Остальные первичные телодвижения, которые надо сделать неплохо описаны
здесь.
Естественно ни у кого никогда сразу все не ставится. Первое, что мне потребовалось доставить - модуль gunicorn :
#не забываем ставить пакеты при активированном вирт.окружении
easy_install gunicorn
Второе, на что ругнулся скрипт синхронизации БД - отсутствие MySQLdb. ИЗИ_инсталлами он не ставится. Качаем с surceforge последний тарболл MySQL-python-1.2.3.tar.gz , распаковываем, и ставим
wget "длинный дайрект линк с сорцфорж"
tar xvfz MySQL-python-1.2.3.tar.gz
cd MySQL-python-1.2.3
python ./setup.py install
Итак, база синхронизована (syncdb), магазин проиницализирован (lfs_init), тестовый сервер запущен. Открываем. И, судя по всему, видим первый "баг совместимости". В данном случае совместимости дефолтных настроек от джанги старых версий с новой джангой.
Module "django.core.context_processors" does not define a "auth" callable request processor
Исправляется просто. Открываем settings.py, ищем список TEMPLATE_CONTEXT_PROCESSORS , комментируем (если страшно)или удаляем :
TEMPLATE_CONTEXT_PROCESSORS = (
#...some processors here
'django.contrib.auth.context_processors.auth',
# 'django.core.context_processors.auth',
#...some processors here
)
Запускаем тестовый сервер. Обновляем страницу. И, "следующий сказал заведующий". Другая ошибка:
Error importing template source loader django.template.loaders.filesystem.load_template_source: "'module' object has no attribute 'load_template_source'
Помните, я выше советовал создать проект-пустышку ? открываем его settings.py, копируем целиком оттуда список TEMPLATE_LOADERS и заменяем им аналог в settings.py нашего lfs-ного магазина.
#список шаблонозагрузчиков должен выглядеть так
TEMPLATE_LOADERS = (
'django.template.loaders.filesystem.Loader',
'django.template.loaders.app_directories.Loader',
# 'django.template.loaders.eggs.Loader',
)
Перезапускаем тестовый сервер или даем ему самому перезапуститься. И эврика, ничего толком не делали и уже видим готовый интернет-магазин )) Шучу, конечно, нам его еще допиливать и допиливать до "требований заказчика".
На этой мажорной ноте "часть первую", пожалуй закончу. Если у кого, вылезло, что-то еще в ходе описанных стадий, о чем я не упомянул - милости прошу поделиться)