Pastebin использует уникальный идентификатор пользователя для гостевых пользователей, чтобы они могли идентифицировать пользователя (без входа в систему).
Когда гостевой пользователь впервые открывает свой веб-сайт, он сохраняет уникальный идентификатор пользователя в локальном хранилище браузера.после следующего запроса они идентифицируют гостевого пользователя по этому идентификатору.
В будущем Если пользователь войдет в систему, он выполнит поиск всего контента в базе данных по ИД пользователя и свяжется с логином ...
Чтобы сделать это ...
сначала сгенерироватьуникальный идентификатор ..
import uuid
quest_id = uuid.uuid4()
- Отправьте этот guest_id в браузер, когда пользователь впервые заходит на ваш сайт.
- получите quest_id из браузера при каждом запросе для идентификации гостевого пользователя
- сохранить всю активность гостевого пользователя по guest_id в базе данных
- , если гостевой пользователь станет пользователем входа в систему, выполнить поиск всех данных по guest_id в базе данных и связать их с этим зарегистрированным пользователем
- Чтобы идентифицировать пользователяиспользуется в качестве гостя или логина ..
if request.user.is_authenticated:
print('this is login user')
сделать поле владельца в вашей модели необязательным и добавить дополнительное поле guest_id
from .helpers import url_shortner
from django.db import models
from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
bio = models.TextField(max_length=500, blank=True)
location = models.CharField(max_length=30, blank=True)
birth_date = models.DateField(null=True, blank=True)
def __str__(self):
return self.username
class Snippet(models.Model):
id = models.CharField(primary_key=True, max_length=19, default=url_shortner, editable=False)
owner = models.ForeignKey(CustomUser, null=true, on_delete=models.CASCADE)
title = models.CharField(max_length=50, default="Untitled")
content = models.TextField()
guest_id = models.CharField(max_length=100, blank=True)
creation_date = models.DateTimeField(auto_now_add=True)
expiration_date = models.DateTimeField(null=True, blank=True)
def __str__(self):
return self.title
, еслипользователь - гость, тогда ..
Snippet.objects.create(owner=None ,guest_id=guest_id .....)
получать guest_id из браузера при каждом запросе
Надеюсь, это поможет вам !!