@windf1n

Как создать систему лайков без регистрации django?

Приветствую. Отправляю по клику ajax:
$('.plus{{ server.id }}').on('click', function() {
                    var data_plus = {
                      id: {{server.id}},
                      move: '+'
                    }
                    $.ajax({
                      url: '/add_voice/',
                      dataType: 'json',
                      data: data_plus,
                      success: function(response) {
                        $('.voices{{ server.id }} b').html(response['voices_count'])
                      }
                    });
                  })
                  $('.minus{{ server.id }}').on('click', function() {
                    var data_minus = {
                      id: {{server.id}},
                      move: '-'
                    }
                    $.ajax({
                      url: '/add_voice/',
                      dataType: 'json',
                      data: data_minus,
                      success: function(response) {
                        $('.voices{{ server.id }} b').html(response['voices_count'])
                      }
                    });
                  })

На views обрабатываю:
def add_voice(request):
    id = request.GET.get('id')
    move = request.GET.get('move')
    server = Server.objects.get(id=id)
    ip = get_client_ip(request)

    if move == '+':
        server.voices += 1
        server.save()
    if move == '-':
        server.voices -= 1
        server.save()

    voices_count = server.voices
    response_data = {
        'voices_count': voices_count
    }

    return JsonResponse(response_data)

Проблема в том, что один пользователь может добавлять 10000 лайков к одной модели. Я мог бы ограничить это всё, но только через обязательную авторизацию. Нужно сделать такое ограничение: не авторизированный пользователь может добавлять лайк 1 раз в 24 часа. Как это сделать? Привязаться к ip? Или как? Может что-то с сессиями?
  • Вопрос задан
  • 69 просмотров
Решения вопроса 1
@dimuska139
Backend developer
Варианты такие:
  1. Привязаться по IP, а с помощью cron или celery очищать записи, дата создания которых превышает 24 часа
  2. После успешного лайка делать запись в COOKIE с id сущности, которую лайкнули. Время жизни COOKIE - 24 часа. При попытке лайкнуть делать проверку.
  3. После успешного лайка делать запись в localStoreage с id сущности, которую лайкнули, и время. При попытке лайкнуть делать проверку.

Последние 2 пункта делать удобней средствами JS. Как ты понимаешь, они вообще не надежные, потому что куки и localStorage хранятся в браузере юзера и ничего не мешает их удалять.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы