Вести учет анонимного пользователя Django - PullRequest
1 голос
/ 04 мая 2020

Я хочу вести учет действий анонимного пользователя на моем веб-сайте wishlist. и хотите сохранить синхронизацию c с django сервером. что будет лучшим способом сделать это? До сих пор я сталкивался с использованием локального хранилища браузера, но в некоторых случаях это неэффективно, например, ведение учета пожеланий гостевого пользователя et c.

1 Ответ

2 голосов
/ 04 мая 2020

Django использует объект Session с session_key в качестве первичного ключа, это также значение, которое вы можете получить с помощью request.session.session_key.

Таким образом, вы можете сделать ForeignKey к объекту Session, над которым в данный момент работает пользователь. Преимущество этого заключается в том, что если очистить Session, то все данные, хранящиеся в этом сеансе, также будут удалены.

Так что если у вас есть MyModel you w * sh для связи с сеансом вы можете использовать:

from django.contrib.sessions.models import <b>Session</b>

class MyModel(models.Model):
    # &hellip;
    session = models.ForeignKey(Session, on_delete=models.CASCADE)

Ключ сеанса можно получить с помощью:

# add a record
if not request.session.session_key:
    request.session.create()
session_id = request.session.session_key
MyModel.objects.create(<b>session_id=session_id</b>)

Остерегайтесь того, что сеансы могут истечь, или «недоступен», если пользователь удаляет их браузерные куки. Хотя хранение данных, относящихся к сеансу, по своей сути не является плохой идеей, оно не очень постоянное .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...