2009-08-13 16 views
5

Sono nuovo di Python/GAE/Django. Ho capito che con GAE non ci sono sessioni in memoria di per sé ... ma penso di volere qualcosa di equivalente. I read che le sessioni di Django can be backed di BigTable o MemCache, ma non le ho mai fatte funzionare. Immagino che quello che sto chiedendo sia "Dovrei ..."Come iniziare con le sessioni in Google App Engine/Django?

  1. Persistere nel far funzionare le sessioni di Django?
  2. Guarda qualche altro framework webapp per le sessioni in particolare, o il sito in generale?
  3. Roll mio proprio?

Mi sembra che le sessioni non siano supportate immediatamente e non siano in qualche modo cittadini di prima classe. Cosa fai?!

Grazie.

risposta

3

Il motivo sessioni Django non sono supportati dal motore di App out of the box è perché Django utilizza tabella del database (modello) sessioni basate, e il django ORM non è supportato su Appengine.

Una soluzione a questo è far funzionare i modelli di django fuori dagli schemi di appengine. Ed è stato fatto patchando il codice django, nel progetto App Engine Patch.

Utilizzando questa patch, mentre i modelli di django funzionano, si accede a admin di django, auth di django e l'ultima versione di django.

È inoltre possibile trovare questo post del blog sulla distribuzione di un'applicazione Django su App Engine, utile: http://uswaretech.com/blog/2009/04/develop-twitter-api-application-in-django-and-deploy-on-google-app-engine/

+0

App Engine Patch sembra un modo molto migliore per avviare un progetto che da soli l'SDK, grazie! – Josh

+0

Questa risposta è obsoleta fino ad oggi - poiché il progetto di patch è stato interrotto. Potrebbe per favore aggiornare la risposta. Sono bloccato allo stesso problema usando la sessione con Django su Appengine. –

1

sto usando sessione gaeutilities ora. Tuttavia, il problema è che queste sessioni create sono accessibili solo all'interno dei codici lato server. Quando provo ad accedervi nel tag django template, posso recuperarli. Mi sto perdendo qualcosa?

Esempio: lato client (Django tag modello)

  {% if request.session["email"]%} 
      <p><a href="/logout/"id="menu">Logout</a></p> 
      <p class="subtext">GoodBye!</p> 
     {% else %} 
      <p><a href="/login/"id="menu">Login</a></p> 
      <p class="subtext">Welcome!</p> 
     {% endif %} 

lato server è solo una semplice self.session [ 'email'] e può essere l'accesso da tutti i file lato server.

Qualche idea su come accedervi dal lato client oltre a rendere il valore della sessione sulla pagina? Ho bisogno di tutte le pagine laterali del client per accedere al valore della sessione.

0

gaeuitlities include un middleware Django, tuttavia non ho mai fatto lo sviluppo di Django per un po 'e non posso garantire al 100% che sia stato aggiornato con il Django. Sono sicuro che non ci vorrà molto tempo per risolvere se c'è un problema.

https://github.com/joerussbowman/gaeutilities/blob/master/appengine_utilities/django-middleware/middleware.py

Se si utilizza tale middleware per voi sessioni, dovrebbe funzionare come ci si aspetta anche in modelli. Si prega di segnalare eventuali problemi su github se si incontrano problemi.

https://github.com/joerussbowman/gaeutilities