@rumak

Как позволить посетителю удалять свои комментарии без авторизации?

Вот views.py:
def comments_list(request):
    comment_list = Comment.objects.all().order_by('-create')
    pagination = Paginator(comment_list, 3)
    page = request.GET.get('page')
    try:
        comments = pagination.page(page)
    except PageNotAnInteger:
        comments = pagination.page(1)
    except EmptyPage:
        comments = pagination.page(pagination.num_pages)

    form = CommentForm(request.POST)
    if request.method == 'POST':
        if form.is_valid():
            comment = form.save()
            comment.save()
            return redirect('comments:comments_list')
        request.session['comment'] = True
    else:
        form = CommentForm()

    temp = 'task/comments_list.html'
    body = {
        'comments': comments,
        'comment_list': comment_list,
        'form': form,
        # 'username': auth.get_user(request).username,
    }

    return render(request, temp, body)

def comment_delete(request, pk):
        comment = get_object_or_404(Comment, pk=pk)
        if not request.user.is_staff or not request.user.is_superuser:
            raise Http404
        comment.delete()
        return redirect('comments:comments_list')


Сейчас комментарий может удалять либо суперюзер, либо авторизованный юзер.

Вопрос: можно ли привязать комментарий, например, к куки, чтобы посетитель мог удалить его без авторизации?
  • Вопрос задан
  • 280 просмотров
Решения вопроса 2
@deliro
ID написанных комментариев можно либо записывать в подписанные куки, либо в сессию. Так как юзеров может быть очень много, можно не хранить данные сессий на сервере, а использовать подписанные куки как хранилище для сессий (но прежде чем это использовать, ознакомься со всеми недостатками такого хранилища)
Ответ написан
SagePtr
@SagePtr
Еда - это святое
Допустим, для каждого гостя генерировать рандомный GUID, который записывать в куки с достаточно длинным сроком жизни. При создании комментария записывать GUID автора, а при удалении проверять и разрешать удаление, если они совпадают.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

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