2009-08-13 14 views
5

Soy nuevo en Python/GAE/Django. Entiendo eso con GAE, no hay sesiones en memoria en sí ... pero creo que quiero algo equivalente. I read que las sesiones de Django can be backed por BigTable o MemCache, pero nunca las hice funcionar. Supongo que lo que estoy preguntando es "Debería ..."¿Cómo comenzar con las sesiones en Google App Engine/Django?

  1. ¿Persistir en conseguir que las sesiones de Django funcionen?
  2. ¿Mirar algún otro marco de aplicaciones web para sesiones en particular, o el sitio en general?
  3. ¿Hacer rodar el mío?

Me parece que las sesiones no son compatibles desde el primer momento y de alguna manera no son ciudadanos de primera clase. ¡¿Qué haces?!

Gracias.

Respuesta

3

La razón sesiones de Django no son compatibles con la aplicación del motor fuera de la caja es porque Django utiliza la tabla de base de datos (modelo) basado en sesiones, y el django ORM no es compatible con appengine.

Una solución para esto es hacer que los modelos django funcionen de la caja en appengine. Y se ha hecho parcheando el código django, en el proyecto App Engine Patch.

Usando este parche, como funcionan los modelos de django, se accede a django admin, django auth junto con la última versión de django.

También puede encontrar esta entrada de blog en la implementación de una aplicación Django en App Engine, útil: http://uswaretech.com/blog/2009/04/develop-twitter-api-application-in-django-and-deploy-on-google-app-engine/

+0

App Engine Patch parece una forma mucho mejor para iniciar un proyecto que el SDK solo, gracias! – Josh

+0

Esta respuesta está desactualizada a partir de hoy, ya que el proyecto de parche ya no está disponible. Podría actualizar la respuesta. Estoy atrapado en el mismo problema al usar sesión con Django en Appengine. –

1

estoy usando gaeutilities sesión ahora. Sin embargo, el problema es que estas sesiones creadas son accesibles solo dentro de los códigos del lado del servidor. Cuando intento acceder a ellos en la etiqueta de la plantilla django, puedo recuperarlos. ¿Me estoy perdiendo de algo?

Ejemplo: Del lado del cliente (etiquetas de Django)

  {% 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 %} 

lado del servidor es sólo una sencilla self.session [ 'email'] y puede ser el acceso de todos los archivos en el servidor.

¿Alguna idea sobre cómo acceder a ellas en el lado del cliente además de mostrar el valor de la sesión en la página? Necesito todas las páginas del lado del cliente para acceder al valor de la sesión.

0

gaeuitlities incluye un middleware de django, sin embargo no he hecho el desarrollo de django por un tiempo y no puedo garantizar al 100% que se haya actualizado con django. Estoy seguro de que no tardaré mucho en solucionarlo si hay un problema.

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

Si utiliza middleware para que le sesiones, que debería funcionar como se espera incluso en las plantillas. Por favor, presente cualquier problema en github si tiene problemas.

https://github.com/joerussbowman/gaeutilities

Cuestiones relacionadas