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.




