как защитить пользователя от редактирования постов других блогов в django? - PullRequest
0 голосов
/ 04 апреля 2019

Я веду блог с Джанго. Люди, которые являются владельцами сообщения в блоге, могут редактировать только сообщение в блоге. как защитить маршрут? Должен ли я сделать пользовательское промежуточное программное обеспечение или есть простой способ

Ответы [ 2 ]

1 голос
/ 04 апреля 2019

Вы можете создать миксин для этой цели.Если вы используете функциональные представления, то функциональный декоратор может сделать то же самое, в то время как вы можете использовать миксины для представлений на основе классов.

Для понимания, вот пример:

mixin

class IsPermittedMixin(object):
    def dispatch(self, request, *args, **kwargs):
        if request.user.is_authenticated():
            //check the permission of the user
                return super(IsPermittedMixin, self).dispatch(request, *args, **kwargs)
        raise PermissionDenied()

views

В ваших представлениях вы можете использовать этот миксин как:

class EditBlog(IsPermittedMixin, View):
    //do something
1 голос
/ 04 апреля 2019

Создать миксин. Это будет что-то вроде:

class IsOwnerMixin(object):
    permission_denied_message = _("You are not the owner of this blog - you cannot edit it")

    def dispatch (self, request, *args, **kwargs):
        if self.get_object().owner != request.user:
            raise PermissionDenied(self.get_permission_denied_message())
        return super().dispatch(request, *args, **kwargs)

    def get_permission_denied_message(self):
        """
        Override this method to override the permission_denied_message attribute.
        """
        return self.permission_denied_message

Для получения дополнительной информации см. Документы: https://docs.djangoproject.com/en/2.2/topics/class-based-views/mixins/

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...