Python 使用视图之外的会话django

Python 使用视图之外的会话django,python,django,python-3.x,django-sessions,Python,Django,Python 3.x,Django Sessions,我在Django应用程序中使用doc创建了一个自定义模板标记,如下所示: myproject/ __init__.py models.py templatetags/ __init__.py myCustomTags.py views.py 在myCustomTags.py中,我需要使用视图中的一些变量。py 因此,我将这些变量保存在会话中,并尝试在myCustomTags.py中获取它们,但没有任何结果,它无法识别我的会话。 我

我在Django应用程序中使用doc创建了一个自定义模板标记,如下所示:

myproject/
    __init__.py
    models.py
    templatetags/
        __init__.py
        myCustomTags.py
    views.py
myCustomTags.py
中,我需要使用视图中的一些变量。py
因此,我将这些变量保存在会话中,并尝试在
myCustomTags.py
中获取它们,但没有任何结果,它无法识别我的会话。
我使用了doc,但这个方法似乎希望我使用session\u键。在这个方法中,我的问题是如何使用没有键的会话,或者如何将键从views.py传递到
myCustomTags.py

以下是我在该方法中的代码:

views.py:

myCustomTags.py

base.html:

{%load dynamic\u vars%}
{%userStatusMode作为用户\状态\事物%}
{{user\u status\u thing}
另一种方法是在views.py中使用requst.sessions,并尝试在myCustomTags.py中获取不起作用的会话

顺便问一下,如何在视图之外使用会话?
我是不是遗漏了什么?

这完全是错的

您不应该直接实例化SessionStore。按照您的方式,您没有给出任何指示,说明您正在尝试获取或设置哪个用户的会话

相反,您应该通过
request.session
访问当前用户的会话

request.session['test_session'] = 'this_is_my_test'
同样,在模板中,您可以直接访问会话dict(无需模板标记):


若要将会话变量传递给模板,您可能需要使用上下文。@vctrd实际上,我的问题是将会话变量传递给另一个.py文件,而不是传递给htmlOk,对不起,那么您可能需要将变量作为参数传递给在这些.py文件中定义的函数。但您需要从视图中调用它们才能访问session@vctrd是的,但是那样的话,我必须为我希望传递到.py文件的每个变量创建并调用一个函数,我想也许有更好的方法,你可以在一个函数中传递一个包含所有会话变量的字典,而不需要拆分。
from django import template
from importlib import import_module
from django.conf import settings
SessionStore = import_module(settings.SESSION_ENGINE).SessionStore
from django.contrib.sessions.backends.db import SessionStore

my_session = SessionStore()
register = template.Library()

@register.simple_tag
def userStatusMode():
    status = my_session['test_session']
    return status
{% load dynamic_vars %}
{% userStatusMode as user_status_thing %}
 <!-- and somewher in base.html -->
{{user_status_thing}}
request.session['test_session'] = 'this_is_my_test'
{{ request.session.test_session }}