Django: как контролировать доступ пользователей к веб-контенту с ограниченным разрешением в день?
У меня есть сайт по ценообразованию онлайн с использованием django.
Теперь я хочу ограничить использование моего сайта не-VIP пользователями для получения цены. Для пользователей, не являющихся vip-пользователями, после входа в систему они могут использовать мой сайт для получения цены только 3 раза в день. Если они нажмут кнопку "получить цену" в четвертый раз в течение дня, должно появиться предупреждающее сообщение, показывающее "не-вип пользователи могут проверять цену только 3 раза в день"
Можем ли мы сделать это непосредственно во фронтенде, используя javascripts?
Вы можете создать модель, которая записывает, какой пользователь получил цену и когда:
class Prize(models.Model):
user = models.ForeignKey(User, on_delete=models.PROTECT)
creation_date = models.DateTimeField(auto_now_add=True)
# Other fields
Когда пользователь нажимает "получить цену", вы можете проверить в бэкенде, получил ли он уже 3 цены в этот день, с помощью простого запроса, например:
can_get_price = Price.objects.filter(creation_date__gte=datetime.now()-timedelta(days=1)).count() < 3
В противном случае, если вы хотите использовать только фронтенд, вы можете кэшировать даты, в которые были получены призы. Однако этот метод легко взломать, и он не работает с несколькими компьютерами/платформами.