Сессии не сохраняются при использовании их в функции просмотра django - PullRequest
0 голосов
/ 28 января 2020

Я хочу сохранить значение имени пользователя в сеансах моего браузера, когда я вызываю функцию входа в систему из представления. Я пробовал синтаксис request.session, но он не работает и не сохраняет имя пользователя в моих сеансах. Я подтвердил это, перейдя на консоль инструментов разработчика.

ФУНКЦИЯ ПРОСМОТРА

def login_submit(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        form = AppUserForm(request.POST)
        # form['my_field'].value()
        if AppUser.objects.filter(username=username, password=password).exists():

            request.session['username'] = username //I WANT TO SET THE SESSION HERE

            return HttpResponseRedirect('/')
        else:
            return login(request)

1 Ответ

0 голосов
/ 28 января 2020

По умолчанию Django -Сессии хранятся в базе данных (если другой механизм сеанса не предусмотрен). Из документов:

По умолчанию Django сохраняет сеансы в вашей базе данных (с использованием модели django .contrib.sessions.models.Session). Используется для хранения данных за один сеанс. Поэтому, если вы закроете окно / вкладку, сессия истечет.

Поэтому, если вы хотите проверить данные сеанса пользователя, вы можете запросить модель django.contrib.sessions.models.Session.

Это пример сохраненных данных в модели:

{
'_state': <django.db.models.base.ModelState object at 0x7f41e2908cf8>, 
'session_key': 'dmi7gfanckowzpikyihlt2a8696tuaka',
 'session_data': 'MDNkYTBlYzMxYTMyZWQ4YzMwZTk0ZY4EjTFmNjA5YWRjMTdiMTA1Nzp7Il9hdXRoX3VzZXJfaWQiOiIyIiwiX2F1dGhfdXNlcl9iYWNrZW5kIjoiZGphbmdvLmNvbnRyaWIuYXV0aC5iYWNrZW5kcy5Nb2RlbEJhY2tlbmQiLCJfYXV0aF91c2VyX2hhc2giOiI3NmQ5Y2I3ZTliNGIzYWExNDc2NmM1OTUxZDBlOWNmZmIxNTUyOGEzIn0=',
 'expire_date': datetime.datetime(2020, 2, 10, 17, 20, 29, 768812,
 tzinfo=<UTC>)
}

Я позвонил instance.__dict__, чтобы получить данные в виде словаря.

Хранилище сеансов, на которое вы ссылаетесь: JavaScript Window.sessionStorage. Вы можете создать хранилище сеансов: (фрагмент из Документов Mozilla)

// Save data to sessionStorage
sessionStorage.setItem('key', 'value');

// Get saved data from sessionStorage
let data = sessionStorage.getItem('key');

// Remove saved data from sessionStorage
sessionStorage.removeItem('key');

// Remove all saved data from sessionStorage
sessionStorage.clear();

Документов Mozilla в sessionStorage .

...