Używanie Django pod GAE
29 September 2008
Comments
W GAE mamy dostęp do Django 0.96.1 oraz Django 1.0.X. Używając czyste Django musimy pamiętać że nie będą działać komponenty zależne od bazy danych (ORM, częściowo formularze, sesje, panel admina, system użytkowników i uprawnień). Obecnie jeżeli chcemy oprzeć projekt o Django na GAE warto użyć app-engine-patch - najbardziej zaawansowanego "portu" Django na tę platformę (przywraca Panel Admina, użytkowników, uprawnienia, formularze z modeli datastore itp.) Konkurencyjny appengine_helper_for_django oferuje mniej i ma nieco inne podejście do integracji Django z nową platformą.
Poniżej przedstawiłem opis wykorzystania czystego Django na GAE. Opis app-engine-patch znajduje się w oddzielnym artykule.
Projekt Django w GAE
- Stwórz nowy katalog aplikacji w GAE SDK
- Stwórz w nim projekt Django
- Utwórz w nim plik main.py o kodzie:
import os, sys os.environ["DJANGO_SETTINGS_MODULE"] = "PROJEKT_DJANGO.settings" sys.path.append("/ścieżka/do/google_appengine/aplikacja") # Google App Engine imports. from google.appengine.ext.webapp import util # Force Django to reload its settings. from django.conf import settings settings._target = None import django.core.handlers.wsgi import django.core.signals import django.db import django.dispatch.dispatcher # Log errors. #django.dispatch.dispatcher.connect( # log_exception, django.core.signals.got_request_exception) # Unregister the rollback event handler. django.dispatch.dispatcher.disconnect( django.db._rollback_on_exception, django.core.signals.got_request_exception) def main(): # Create a Django application for WSGI. application = django.core.handlers.wsgi.WSGIHandler() # Run the WSGI CGI handler with that application. util.run_wsgi_app(application) if __name__ == "__main__": main()
- W pliku main.py należy ustawić ścieżkę do aplikacji GAE (tylko dla SDK!) oraz podać nazwę projektu django dla załączenia jego ustawień.
- Stwórz plik app.yaml o kodzie np.:
application: NAZWA_APLIKACJI_GAE version: 1 runtime: python api_version: 1 handlers: - url: /site_media static_dir: PROJEKT_DJANGO/site_media - url: /.* script: main.py
- Po uruchomieniu serwera GAE SDK powinniśmy zobaczyć "It worked" z Django pod głównym URLem aplikacji
RkBlog
Comment article