Soy consciente de que puede obtener variables de sesión usando request.session['variable_name']
, pero no parece haber una manera de tomar el sessionid como una variable de una manera similar. ¿Está esto documentado en algún lugar? No puedo encontrarlo ¡Gracias por tu ayuda!En Django, ¿cómo puedo averiguar el sessionid de request.session y usarlo como una variable?
Respuesta
mucho más sencillo:
request.session.session_key
Nota sólo existe la clave si hay una sesión, ninguna tecla, sin sesión Puede usar esto para probar si existe una sesión. Si quieres crear una sesión, llama a create.
Las sesiones de Django guardan su clave en una cookie. Al menos su middleware extrae de esta manera:
from django.conf import settings
session_key = request.COOKIES[settings.SESSION_COOKIE_NAME]
esto no ayuda si la sesión la clave no existe sin embargo. – Greg
Uso:
request.COOKIES['sessionid']
Esto le proporcionará un ID de sesión o creará uno para usted. Si lo hace dir(request.session)
, obtendrá muchos métodos útiles.
['TEST_COOKIE_NAME', 'TEST_COOKIE_VALUE', '__class__', '__contains__',
'__delattr__', '__delitem__', '__dict__', '__doc__', '__format__',
'__getattribute__', '__getitem__', '__hash__', '__init__', '__module__',
'__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__',
'__setitem__', '__sizeof__', '__str__', '__subclasshook__', '__weakref__',
'_get_new_session_key', '_get_or_create_session_key', '_get_session',
'_get_session_key', '_hash', '_session', '_session_key', 'accessed',
'clear', 'create', 'cycle_key', 'decode', 'delete', 'delete_test_cookie',
'encode', 'exists', 'flush', 'get', 'get_expire_at_browser_close',
'get_expiry_age', 'get_expiry_date', 'has_key', 'items', 'iteritems',
'iterkeys', 'itervalues', 'keys', 'load', 'modified', 'pop', 'save',
'session_key', 'set_expiry', 'set_test_cookie', 'setdefault',
'test_cookie_worked', 'update', 'values']
session_id = request.session._get_or_create_session_key()
en Django> = 1.4 uso:
request.session._session_key
Erm, la intención principal de las variables privadas (las que comienzan con un guión bajo) es que ** no ** debes usarlas. –
@ MichałGórny, ¿cuál es la alternativa? si no hay ninguno, no veo cómo podemos elegir ... – Mark
La alternativa es escribir el código correcto. Si django no proporciona una API * public * para obtener la clave de sesión, simplemente significa que no debe usar esa clave. No puedo contarle más sin saber exactamente qué está tratando de hacer, pero probablemente sea un campo para una pregunta por separado. –
En Django 1.8:
request.session.session_key
y
request.session._session_key
Ambos trabajan correctamente.
Para obtener la clave de sesión de manera confiable, debe asegurarse de que la sesión se haya creado primero. The documentation menciona un método .create()
sesión, que se puede utilizar para asegurarse de que hay una clave de sesión:
def my_view(request):
if not request.session.session_key:
request.session.create()
print(request.session.session_key)
Puede cheque en sus sesiones de también:
If "var" in request.session:
Var = request.session['var']
Return httpResponse("set")
Else:
Return httpResponse("there isn't")
- 1. Parrot - ¿Puedo usarlo? ¿Y cómo?
- 2. Prueba de una variable de sesión en Django
- 3. Declarar variable en sqlite y usarlo
- 4. Averiguar si existe una variable
- 5. Obtener el nombre de la hoja de Excel y usarlo como variable en macro
- 6. ¿Cómo puedo averiguar mejor cómo funciona django internamente?
- 7. ¿Qué es EGL y cómo puedo usarlo?
- 8. ¿Cómo puedo pasar un nombre de variable como parte de un parámetro a un archivo por lotes y luego usarlo?
- 9. ¿Cómo puedo averiguar el valor de $ (ProjectDir)?
- 10. Scala: ¿Cómo puedo implementar un método de clonación en una superclase y usarlo en una subclase?
- 11. Averiguar dónde se inicializa una variable
- 12. ¿Cómo formatear "en coma" el resultado de una variable django?
- 13. ¿Cómo se genera un sessionID?
- 14. Django y urls.py: ¿Cómo puedo HttpResponseRedirect a través de una url con nombre?
- 15. Python: Cómo "bifurcar" una sesión en django
- 16. ¿Cómo puedo usar una variable de JavaScript como una variable de PHP?
- 17. ¿Por qué no puedo obtener 'sessionid' en el lado del cliente?
- 18. ¿Cómo puedo usar una variable como nombre de variable en Perl?
- 19. Cómo convertir un hash MD5 en una cadena y usarlo como nombre de archivo
- 20. imprimir el valor de una variable en Python/Django?
- 21. ¿Cómo puedo usar una variable como nombre de variable en Ruby?
- 22. En Django, ¿cómo borro una sessionkey?
- 23. ¿Cómo puedo inicializar un registro declarado como una variable local?
- 24. ¿Qué es LD_LIBRARY_PATH y cómo usarlo?
- 25. ¿Cómo puedo averiguar qué procedimiento arrojó una excepción en Delphi?
- 26. Declarar una variable implícita escrito dentro de alcance condicional y usarlo fuera
- 27. LLVM ¿Qué es y cómo puedo usarlo para compilaciones multiplataforma
- 28. Cómo utilizar el valor de una variable como el nombre de otra variable en bash
- 29. Agregue una variable para solicitarla en django
- 30. Obtener request.session desde una vista genérica basada en clase
A partir de Django 1.4, esto ya no funciona. –
@VebjornLjosa ¿qué hace? – aehlke
@aehike: 'request.session._session_key' según la respuesta de @Vinicius – hughes