Я искал SO и Django Doc и не могу найти это. Я расширяю базовую функциональность приложения django.contrib.comments , чтобы использовать систему пользовательских разрешений, которая есть в моем веб-приложении. Для действий модерации я пытаюсь использовать представление на основе классов для обработки базового запроса комментария и проверки прав доступа к нему. («EComment» в данном контексте - это мой «расширенный комментарий», унаследованный от базовой модели комментариев django.)
Проблема, с которой я столкнулся, заключается в том, что comment_id
- это передача kwarg с URL-адреса в urls.py. Как правильно извлечь это из представления на основе классов?
Прямо сейчас Django выдает ошибку TypeError: ModRestore() takes exactly 1 argument (0 given)
. Код включен ниже.
urls.py
url(r'restore/(?P<comment_id>.+)/$', ModRestore(), name='ecomments_restore'),
views.py
def ECommentModerationApiView(object):
def comment_action(self, request, comment):
"""
Called when the comment is present and the user is allowed to moderate.
"""
raise NotImplementedError
def __call__(self, request, comment_id):
c = get_object_or_404(EComment, id=comment_id)
if c.can_moderate(request.user):
comment_action(request, c)
return HttpResponse()
else:
raise PermissionDenied
def ModRestore(ECommentModerationApiView):
def comment_action(self, request, comment):
comment.is_removed = False
comment.save()