Sesiones con las Sub-aplicaciones

Nota:

Esta solución se ha tomado de este post en la lista de distribución de Web.py.

Problema

En su comportamiento por defecto, la información de la sesión sólo se puede compartir desde dentro de la aplicación principal, incluso si usted ‘importa‘ la sesión desde otro módulo.
Usted necesita ser capaz de acceder a la información de la sesión de la ‘Sub-Aplicación‘ pero como?

Solución

En su app.py(o main.py) inicie su sesión de este modo:

session = web.session.Session(app, web.session.DiskStore('sessions'),
initializer = {'test': 'woot', 'foo':''})

.. y cree un procesador(processor) vía web.loadhook:

def session_hook():
    web.ctx.session = session

app.add_processor(web.loadhook(session_hook))

.. y ahora en su ‘sub-applicación‘(como sub-app.py) usted puede acceder a la información de la sesión, así:

print web.ctx.session.test
web.ctx.session.foo = 'bar'

.. si usted quiere hacer que la sesión este disponible en las plantillas, debe cambiar la función “session_hook” de esta manera:

def session_hook():
    web.ctx.session = session
    web.template.Template.globals['session'] = session

.. y ahora usted puede escribir en la plantilla algo como esto:

$session.get('logged_in', ''):
    <p>You are $session.username</p>
$else:
    <p>You are not logged in</p>
Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s