Django - установите ОДИН ключ сеанса для каждого посетителя / браузера и запомните его, не входя в систему - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь создать корзину для электронной коммерции в Django и попал в беду с session_key . Когда я захожу на страницу администратора, мой session_key всегда один и тот же. Но после выхода из системы мой session_key - None. Поэтому я звоню request.session.create(), но после обновления страницы session_key снова None. В чем проблема, поскольку я хотел бы связать каждую корзину с сессионным ключом.

Есть ли способ заставить Django запомнить браузер пользователя / сессионный ключ? Или как я могу реализовать те же логи c, что и для зарегистрированных пользователей для незарегистрированных пользователей?

Спасибо!

1 Ответ

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

Неважно, я нашел решение. Это на самом деле очень просто, так как я только что сделал эту функцию в view.py

def set_or_check_sessionid(request):
    session_id = request.session._get_or_create_session_key()
    response = HttpResponse('sessionID_set')
    tomorrow = datetime.datetime.now() + datetime.timedelta(days = 1)
    response.set_cookie('sessionid', session_id, expires=tomorrow)
    print(session_id)
    return response

эта простая функция вызывается при загрузке каждого документа из JS с простым вызовом через определенный url.py как path('ajax/getSessionKey/', get_session_id, name='get_session_id')

с JS, который загружается в каждый документ $.get("/ajax/set_or_check_sessionid/");

...