среда, 3 марта 2010 г.

Django-nonrel 1-Установка

любителям Django и Google app engine посвящается.

До последнего времени самым продвинутым решением для связки GAE+Django был проект app-engine-patch, на сегодняшний день более не поддерживаемый. На странице проекта авторы объявляют о новом своем творении Django-nonrel для всех желающих использовать Django ORM с App Engine и другими NoSQL / non-relational базами данных. Так-же рекомендуют обратить взор (что я сделаю позже) на django-like фрэймворк Kay Framework созданный специально для App Engine. Стоит упомянуть, что сайт проекта All buttons pressed создан с использованием django-nonrel и djangoappengine.

Ниже описанные действия проводились на нетбуке с все еще альфа Ubuntu lucid, Python 2.6.4, установленным mercurial и прочими прелестями, на окружении сосредотачиваться не буду, лишь оговорюсь, что во многих источниках рекомендуют использовать Python 2.5.

Итак приступим...
  1. создаем отдельную папку, дабы не разводить бардак
    cd ~
    mkdir gae
    cd gae
  2. скачиваем и распаковываем последний App Engine SDK для Python (в моем случае 1.3.1).
    wget -c http://googleappengine.googlecode.com/files/google_appengine_1.3.1.zip
    unzip ./google_appengine_1.3.1.zip
  3. клонируем django-nonrel, djangoappengine, django-testapp
    hg clone http://bitbucket.org/wkornewald/django-nonrel/
    hg clone http://bitbucket.org/wkornewald/djangoappengine/
    hg clone http://bitbucket.org/wkornewald/django-testapp/
  4. создаем симлинки
    ln -s ../../djangoappengine ./django-testapp/common-apps/djangoappengine
    ln -s ../../django-nonrel/django ./django-testapp/common-apps/django
  5. первый тестовый запуск
    ./google_appengine/dev_appserver.py ./django-testapp
    в браузере открываем http://localhost:8080/
    It worked!
  6. для того, чтобы мы могли использовать manage.py,
    нам надо что-бы папка куда мы распаковали App enginde SDK была доступна через переменную окружения PATH
    в моем случае можно ввести
    PATH="$PATH:$HOME/gae/google_appengine"
    также, что-бы этого не делать после перезагрузки добавим путь в файл ~/.profile командой
    echo -e '\nPATH="$PATH:$HOME/gae/google_appengine"' >> ~/.profile
  7. cd django-testapp
    ./manage.py runserver
    в браузере открываем http://localhost:8000/
    It worked!
все первый этап завершен!
версия форка Django Version: 1.2 beta 1

можно создавать апликейшны в папке django-testapp (это как каркас для нового проекта), используя manage.py startapp ..., использовать manage.py syncdb, manage.py createsuperuser, и manage.py runserver как обычно. Также задеплоить, при помощи manage.py deploy. это автоматом сделает syncdb на продакшене.

Обновлять проекты до текущего состояния можно так:
cd django-nonrel - т.е. перейдем водну из склонированных папок
hg pull -u

PS было желание в одном посте описать, что есть, чего еще нет и над чем идет работа, привести примеры...
все будет в последующих.

9 комментариев:

  1. много слышал про django, можно подробную инструкцию как это сделать под Windows (желательно 7)

    ОтветитьУдалить
  2. Интересный поворот событий. Спосиба за информацию, попробую Django-nonrel.

    ОтветитьУдалить
  3. просьба,для тех кто "много слышало django" все-же начать с http://djbook.ru/

    ОтветитьУдалить
  4. В пункте 4, там где создание симлинков, ../../ - явно лишние

    ОтветитьУдалить
  5. Спасибо за подробноу описание инсталяции но тут есть одно но. при ./google_appengine/dev_appserver.py ./django-testapp оно конечно стартует, только вот не работает:
    django.core.exceptions.ImproperlyConfigured: 'djangoappengine.db' isn't an available database backend.
    Try using django.db.backends.XXX, where XXX is one of:
    'dummy', 'mysql', 'oracle', 'postgresql', 'postgresql_psycopg2', 'sqlite3'
    Error was: No module named djangotoolbox.db.creation

    ОтветитьУдалить
  6. первый тестовый запуск
    $ ./google_appengine/dev_appserver.py ./django-testapp
    в браузере открываем http://localhost:8080/
    It worked!

    это для теста

    для работы:

    $ ./manage.py runserver
    в браузере открываем http://localhost:8000/
    It worked!

    ОтветитьУдалить
  7. Vallar, нужно установить еще и djangotoolbox в common-apps.
    Добавить в п. 3 -
    hg clone http://bitbucket.org/wkornewald/djangotoolbox
    а в п.4 что-то типа
    ln -s ../../djangotoolbox ./django-testapp/common-apps/djangotoolbox

    ОтветитьУдалить
  8. Vlad, спасибо есть такой момент)))
    (на момент написания поста это не было необходимо)

    ОтветитьУдалить