любителям 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.
Итак приступим...
- создаем отдельную папку, дабы не разводить бардак
$ cd ~
$ mkdir gae
$ cd gae
- скачиваем и распаковываем последний 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
- клонируем 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/
- создаем симлинки
$ ln -s ../../djangoappengine ./django-testapp/common-apps/djangoappengine
$ ln -s ../../django-nonrel/django ./django-testapp/common-apps/django
- первый тестовый запуск
$ ./google_appengine/dev_appserver.py ./django-testapp
в браузере открываем http://localhost:8080/
It worked! - для того, чтобы мы могли использовать manage.py,
нам надо что-бы папка куда мы распаковали App enginde SDK была доступна через переменную окружения PATH
в моем случае можно ввести
$ PATH="$PATH:$HOME/gae/google_appengine"
также, что-бы этого не делать после перезагрузки добавим путь в файл ~/.profile командой
$ echo -e '\nPATH="$PATH:$HOME/gae/google_appengine"' >> ~/.profile
- $ 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 было желание в одном посте описать, что есть, чего еще нет и над чем идет работа, привести примеры...
все будет в последующих.
много слышал про django, можно подробную инструкцию как это сделать под Windows (желательно 7)
ОтветитьУдалитьИнтересный поворот событий. Спосиба за информацию, попробую Django-nonrel.
ОтветитьУдалитьпросьба,для тех кто "много слышало django" все-же начать с http://djbook.ru/
ОтветитьУдалитьВ пункте 4, там где создание симлинков, ../../ - явно лишние
ОтветитьУдалитьизвиняюсь, ошибся
ОтветитьУдалитьСпасибо за подробноу описание инсталяции но тут есть одно но. при ./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
первый тестовый запуск
ОтветитьУдалить$ ./google_appengine/dev_appserver.py ./django-testapp
в браузере открываем http://localhost:8080/
It worked!
это для теста
для работы:
$ ./manage.py runserver
в браузере открываем http://localhost:8000/
It worked!
Vallar, нужно установить еще и djangotoolbox в common-apps.
ОтветитьУдалитьДобавить в п. 3 -
hg clone http://bitbucket.org/wkornewald/djangotoolbox
а в п.4 что-то типа
ln -s ../../djangotoolbox ./django-testapp/common-apps/djangotoolbox
Vlad, спасибо есть такой момент)))
ОтветитьУдалить(на момент написания поста это не было необходимо)