Я сделал пользовательский тег шаблона, используя этот документ, подобный этому в моем приложении Django:
myproject/
__init__.py
models.py
templatetags/
__init__.py
myCustomTags.py
views.py
в myCustomTags.py
, мне нужно использоватьнекоторые переменные, которые есть в views.py
, поэтому я сохранил эти переменные в сеансе и попытался получить их в myCustomTags.py
, но пометка сработала, и он не распознал мои сеансы.
Я использовал this doc, но, похоже, этот метод хочет, чтобы я использовал session_keys.в этом методе мой вопрос заключается в том, как использовать сеансы без ключа или как-то передать ключи из views.py в myCustomTags.py
тоже.
вот мой код в этом методе:
views.py:
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()
def user_login(request):
if request.method == "POST":
username = request.POST.get('username')
password = request.POST.get('password')
# some process to validate and etc...
my_session['test_session'] = 'this_is_my_test'
my_session.create()
return redirect(reverse('basic_app:index'))
myCustomTags.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
base.html :
{% load dynamic_vars %}
{% userStatusMode as user_status_thing %}
<!-- and somewher in base.html -->
{{user_status_thing}}
другим методом было использование requst.sessions в views.py и попытка получить их в myCustomTags.py, который не сделалтоже не работает.
кстати, как я могу использовать сессию вне представлений?я что-то здесь упускаю?