Сегодня 11 января, суббота ГлавнаяНовостиО проектеЛичный кабинетПомощьКонтакты Сделать стартовойКарта сайтаНаписать администрации
Поиск по сайту
 
Ваше мнение
Какой рейтинг вас больше интересует?
 
 
 
 
 
Проголосовало: 7278
Кнопка
BlogRider.ru - Каталог блогов Рунета
получить код
Web.Запой
Web.Запой
Голосов: 0
Адрес блога: http://webzapoi.blogspot.com/
Добавлен: 2012-05-14 10:10:32
 

[E-COMMERCE] Первая установка django-lfs - преодолеваем преграды

2012-04-07 23:05:00 (читать в оригинале)

ВВЕДЕНИЕ

Как то раз мне понадобилось готовое e-commerce решение для интернет магазина (не люблю велосипеды) конкретно под django. Не хотел использовать старые, хоть и проверенные годами PHP'шные CMS решения, потому что мне нужна была возможность всячески дорабатывать его в будущем, а PHP вообще не мой конёк. :)

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


ПОЧЕМУ DJANGO-LFS?

Обзор решений по электронной коммерции для Django это тема для отдельной статьи и здесь я ограничусь лишь перечислением наиболее популярных из пакетов.

У “джангистов” выбор более чем скромный:
1. Satchmo (пример)
2. django-lfs (пример)
3. Satchless (в активной разработке)
4. django-shop (сделан упор на плагины)

Я поставил django-lfs на второе место, так как satchmo считается все-же более зрелым и функциональным продуктом. Но я таки выбрал lightning fast shop (LFS). Почему? Отвечаю. Не я первый и не я последний говорю, что satchmo слишком “толстый”. Когда я это говорю, я имею ввиду что satchmo это огромная куча кода, причём не самого лучшего качества. Он тяжёлый и местами глючный. А когда ты пытаешься залезть в него и понять в чем там дело, то попадаешь в моря и океаны костылей, заплаток, временных решений с пометкой в стиле TODO: когда-нибудь. Кто видел, тот знает.

На проекте satchless, который как раз и создавался ему в противовес, и отмечают эту серьезную проблему. А LFS хоть и имеет версию 0.7, на мой взгляд, достаточно “отполирован” и уже может быть использован в коммерческих проектах хоть и с осторожностью.
Ну и конечно же, есть и еще некоторые, но совсем уж “скромные” решения для интернет-магазино-строения - но их я рассматривать не буду.

Ладно, начинаем устанавливать django-lfs.

ТРЕБОВАНИЯ

Для того что бы все о чем мы говорим заработало, мы уже должны иметь:
  1. virtualenv
  2. setuptools
  3. python 2.6 или 2.7
В последних версиях Ubuntu как правило предустановленна версия 2.7, кстати, мы будем работать именно в этой ОС и с этой версией питона. Перед основной установкой нам нужно проделать небольшую подготовку.

ВНИМАНИЕ: Если поискать по просторам интернета по запросам в стиле «django-lfs не устанавливается», ссылка, и т. п., то можно встретить одну достаточно распространённую проблему. Одна из зависимостей django-lfs не устанавливается выдавая ошибки в стиле:

_imaging.c:75:20: fatal error: Python.h: No such file or directory

Setup script exited with error: command 'gcc' failed with exit status 1

Так проявляет себя одна из зависимостей. А именно Pillow. Она не хочет устанавливаться,  словно просит бубна :) Решается эта проблема просто. Нужно установить python-dev. В моем случае нужно набрать следующую команду:

    $ sudo apt-get install python2.7-dev

УСТАНОВКА

С самого начала создаем виртуальное окружение, указав что не нужно использовать глобальные пакеты:

    $ virtualenv mylfs --no-site-packages

Далее заходим в директорию, которую для нас создал virtualenv и активируем окружение:

    $ cd mylfs
    $ source bin/activate

Далее. Вместо того чтобы продолжить установку и действовать по инструкции указанной в документации к django-lfs мы должны кое-что доустановить. То о чем пойдет речь, в документации django-lfs — не указано.

А собственно проблема в следующем. Речь пойдет о файлах изображений, которые мы будем закачивать в наш будущий магазин. Проблема в том, что по умолчанию наш магазин не воспринимает файлы рисунков в формате JPEG. Да-да, вы пытаетесь в качестве изображения какого-нибудь товара загрузить картинку.JPG и ничего из этого не выходит. Как бы это абсурдно не звучало, но это так. Чтобы преодолеть это странное ограничение достаточно заглянуть в документации Pillow. Я уже это сделал за вас, поэтому просто наберите в терминале:

    $ sudo apt-get install libjpeg62-dev zlib1g-dev libfreetype6-dev



УСТАНОВКА2

И вот теперь уже можем приступать к пунктам указанным в документации к django-lfs. Можем действовать прямо по списку. Коротко на русском:

  1. Выкачиваем файл django-lfs installer отсюда: http://pypi.python.org/pypi/django-lfs
  2. Распаковываем: $ tar xzf django-lfs-installer-<version>.tar.gz
  3. Переходим в созданную директорию: $ cd lfs-installer
  4. Запускаем: $ python bootstrap.py
  5. Запускаем: $ bin/buildout -v
  6. В файле settings укажите базу данных в lfs_project/settings.py
  7. Запускаем: $ bin/django syncdb
  8. Запускаем: $ bin/django lfs_init
  9. Запускаем: $ bin/django collectstatic
  10. Запускаем: $ bin/django runserver
  11. Смотрим результат как обычно: http://localhost:8000/

ИТОГ

Вообще-то конечно это не все косяки которые можно встретить в django-lfs, например, хоть и присутствует русская локализация местами все же встречаются перлы вроде перевода слова E-mail, который в принципе можно не переводить, переведён как “Электропочта” и т. д. Ближайшее время я напишу разработчику (Kai Diefenbach) об этом или сделаю pull request. В целом хочу сказать что этот пакет наиболее достойное open source решение для интернет-магазина из того что мы вообще имеем на данный момент. И судя по динамике commit’ов на bitbucket (https://bitbucket.org/diefenbach/django-lfs/overview) проект активно развивается и цветет. Вот. Остальное отпишу в следующий раз.

PS: Кстати. Я вспомнил чем ещё была навеяна эта статья. На одном из фрилансерских сайтов, работодатель жаловался на исполнителя что тот по договору должен был внести изменения на сайт, который работал под django-lfs. На что исполнитель ответил, что он не смог просто-напросто его даже установить у себя на локальной машине, хотя он оставил заявку и выиграл тендер на этот проект. Наверно ему бы эта статья не помешала. Ссылку искать лень, но если найду то добавлю в пост.

Тэги: django, django-lfs, e-commerce

 


Самый-самый блог
Блогер ЖЖ все стерпит
ЖЖ все стерпит
по сумме баллов (758) в категории «Истории»


Загрузка...Загрузка...
BlogRider.ru не имеет отношения к публикуемым в записях блогов материалам. Все записи
взяты из открытых общедоступных источников и являются собственностью их авторов.