Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Django
  • » Django Mixin для проверки владельца записи [RSS Feed]

#1 Июль 12, 2013 09:29:21

andreiru
От:
Зарегистрирован: 2010-11-06
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

Django Mixin для проверки владельца записи

Здравствуйте!

Для LoginRequired в cbv я использую:

class LoginRequiredMixin(object):
    @method_decorator(login_required)
    def dispatch(self, request, *args, **kwargs):
        return super(LoginRequiredMixin, self).dispatch(request, *args, **kwargs)
class CarAdd(LoginRequiredMixin, CreateView):
   pass

Можно ли что-нибудь подобное сделать для проверки владельца записи ?

Или все же придется всегда писать так:
class MyDeleteView(DeleteView):
    def get_object(self, queryset=None):
        """ Hook to ensure object is owned by request.user. """
        obj = super(MyDeleteView, self).get_object()
        if not obj.owner == self.request.user:
            raise Http404
        return obj

?



Отредактировано andreiru (Июль 12, 2013 09:29:38)

Офлайн

#2 Июль 12, 2013 09:54:20

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Django Mixin для проверки владельца записи

Офлайн

#3 Июль 13, 2013 07:52:14

zheromo
От:
Зарегистрирован: 2010-10-02
Сообщения: 356
Репутация: +  2  -
Профиль   Отправить e-mail  

Django Mixin для проверки владельца записи

Сделайте проверку в виде миксина

class CheckOwnerMixin(object):
    owner_field = 'owner'
    def get_object(self, queryset=None):
        obj = super(MyDeleteView, self).get_object()
        if not getattr(obj, self.owner_field) == self.request.user:
            raise Http404
        return obj
class MyDeleteView(CheckOwnerMixin, DeleteView):
    pass



Офлайн

#4 Июль 13, 2013 12:05:46

andreiru
От:
Зарегистрирован: 2010-11-06
Сообщения: 154
Репутация: +  0  -
Профиль   Отправить e-mail  

Django Mixin для проверки владельца записи

zheromo, смущает obj = super(MyDeleteView , self).get_object(), получается миксин только для одной вьюхи !?



Офлайн

  • Начало
  • » Django
  • » Django Mixin для проверки владельца записи[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version