Как перенести проект Django в Google App Engine - PullRequest
2 голосов
/ 12 февраля 2012

Я ищу руководство по переносу проекта Django в Google App Engine и использованию хранилища данных Google. Большинство руководств, которые я нашел, были связаны с Django-Appengine с использованием Django-nonrel (но я хочу использовать встроенную поддержку GAE).

Проходя через Руководство по началу работы с GAE , там написано:

Google App Engine поддерживает любую платформу, написанную на чистом Python, которая говорит на CGI (и любую WSGI-совместимую среду, использующую адаптер CGI), включая Django, CherryPy, Pylons, web.py и web2py. Вы можете связать фреймворк по вашему выбору с кодом приложения, скопировав его код в каталог приложения.

Я понимаю, что в этом случае я не смогу использовать некоторые функции Django (в основном это функция администратора), и мне также потребуется реструктурировать модели.

Из другого прочтения я также обнаружил, что последний SDK GAE теперь включает Django 1.3 на Python 2.5.

Я пытался поместить все файлы из моего приложения Django в проект GAE, но не смог заставить все это работать вместе.

Пожалуйста, предоставьте базовое руководство, с помощью которого я могу перенести свой проект Django в код Google App Engine.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 15 февраля 2012

Для существующего приложения Django использование django-nonrel является самым простым подходом; он очень популярен, поэтому вы сможете быстро найти помощь по конкретным ошибкам.

В этой статье описан другой подход: http://code.google.com/appengine/articles/pure_django.html - он идет другим путем, беря приложение App Engine, которое использует Django для отправки, шаблонов и форм, но не для моделей, и описывает, как чтобы он работал в нативной среде Django. Может быть, вы сможете почерпнуть из него несколько полезных советов для вашей ситуации.

2 голосов
/ 13 февраля 2012

Я использовал django-nonrel, который ведет себя почти как django, за исключением того, что операции с JOIN возвращают ошибки.В основном я обошел эту проблему, избегая полей ManyToMany и по сути создавая эту функциональность вручную с помощью промежуточной таблицы.

До сих пор я столкнулся с двумя проблемами с Django-nonrel: 1. Нет доступа к запросам предков., который может быть запущен в транзакции.Хотя есть ожидающий запрос на получение этой функции.2. Вы не можете указать поля, которые не проиндексированы.Это может значительно увеличить ваши расходы на запись.У меня есть идея, чтобы исправить это, но я еще не сделал этого.
(Редактировать: вы МОЖЕТЕ указать поля, которые не проиндексированы, и я убедился, что это работает хорошо).2 (новый).Google выдвигает новую базу данных, называемую ndb, которая выполняет автоматическое кэширование и пакетную обработку, которая не будет доступна с django-nonrel.

Если вы решите не использовать django-nonrel, основные различия заключаются в том, что модели Django делаютне работает под App Engine.Вам придется переписать свои модели, чтобы они унаследовали от db.Model App Engine.Ваши формы, которые используют ModelForm Django, должны вместо этого наследоваться от google.appengine.ext.db.djangoforms.После того, как вы подключитесь к App Engine, вам придется портировать Django, если вы когда-нибудь попробуете другое приложение.

1 голос
/ 16 февраля 2012

Если у вас уже есть приложение Django, вы можете проверить это . Вы не будете работать с хранилищем данных App Engine, но Google Cloud SQL может соответствовать вашим потребностям.

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