Neste tutorial eu mostrarei como ter uma aplicação simples com acesso a banco de dados usando Django e rodando no Google App Engine. Assumirei que você tem alguma familiaridade com o Django.
Passo 1: Registre um nome de aplicativo e instale o kit de desenvolvimento seguindo as instruções do site.
Passo 2: Crie um diretório para o seu aplicativo - Para este tutorial meu aplicativo chama-se mashname:
tmp$ mkdir mashname tmp$ cd mashnamePasso 3: Adicione um arquivo chamado main.py no seu novo diretório:
# main.py import os, sys os.environ["DJANGO_SETTINGS_MODULE"] = "mashname.settings" sys.path.append("/home/brox/tmp/mashname") # 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()Este é basicamente o mesmo arquivo sugerido, exceto pelo caminho do Python que eu tive que configurar para poder fazer os testes localmente. Eu também tive que configurar a variável DJANGO_SETTINGS_MODULE - pode ser que este passo seja desnecessário quando o aplicativo estiver executando no App Engine. Eu tive que desabilitar o log de erros, os quais eu não consegui fazer funcionar.
Passo 4: Adicione um arquivo chamado app.yaml ao mesmo diretório com o conteúdo abaixo:
application: mashname version: 1 runtime: python api_version: 1 handlers: - url: /.* script: main.pyAssegure-se de usar o nome correto do aplicativo.
Passo 5: Do seu diretório mashname, crie um novo projeto do Django:
tmp/mashname$ django-admin.py startproject mashname
(Estou assumindo que o seu diretório do Django está configurado e funcionando como deveria.)
Passo 6: Agora você deveria poder testar seu aplicativo:
tmp/mashname$ cd .. tmp$ dev_appserver.py mashname INFO 2008-04-08 19:08:10,023 appcfg.py] Checking for updates to the SDK. INFO 2008-04-08 19:08:10,384 appcfg.py] The SDK is up to date. INFO 2008-04-08 19:08:10,404 dev_appserver_main.py] Running application mash name on port 8080: http://localhost:8080Aponte o seu browser para o endereço http://127.0.0.1:8080/ e você deverá ver a mensagem padrão do Django "It worked!".
Passo 7: Crie um aplicativo Django dentro do projeto:
tmp$ cd mashname tmp/mashname$ python mashname/manage.py startapp mainPasso 8: Agora é hora de adicionarmos um modelo. Nós criaremos um aplicativo simples que loga todos os visitantes em uma base de dados e exibe seus endereços IP. Edite o arquivo ~/mashname/mashname/main/models.py para que ele se pareça com isso:
# models.py from google.appengine.ext import db class Visitor(db.Model): ip = db.StringProperty() added_on = db.DateTimeProperty(auto_now_add=True)Não há necessidade de sincronizarmos o banco de dados uma vez que não estaremos usando os modelos do próprio Django.
Passo 9: Agora nós criaremos uma view que é responsável tanto por adicionar os dados ao modelo Visitor quanto por mostrar os visitantes anteriores. Edite o arquivo views.py (no mesmo diretório em que está o arquivo models.py) de modo que ele faça o que queremos:
# views.py from django.http import HttpResponse from mashname.main.models import Visitor def main(request): visitor = Visitor() visitor.ip = request.META["REMOTE_ADDR"] visitor.put() result = "" visitors = Visitor.all() visitors.order("-added_on") for visitor in visitors.fetch(limit=40): result += visitor.ip + u" visited on " + unicode(visitor.added_on) + u"" return HttpResponse(result)
Passo 10: Finalmente, faça com que o seu arquivo urls.py aponte para a view:
# urls.py from django.conf.urls.defaults import * urlpatterns = patterns("", (r"^$", "mashname.main.views.main"), )Passo 11: Teste o seu aplicativo (do mesmo modo que foi feito no passo 6) e tudo deveria funcionar perfeitamente. A cada vez que a página for recarregada uma nova entrada será adicionada ao modelo Visitor model e será exibido na view.
Passo 12: Faça o upload do seu aplicativo para o Google App Engine:
tmp$ appcfg.py update mashnameNa primeira vez em que o upload for feito, você terá que informar seu e-mail e sua senha do google.
Passo 13: Divirta-se! Para ver o resultado final, vá para http://adf.ly/35ZNC.