Używanie Django pod GAE

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
Dodatkowe informacje na Django on Google App Engine in 13 simple steps.
RkBlog

Google App Engine (GAE), 29 September 2008

Comment article
Comment article RkBlog main page Search RSS Contact