Я пытаюсь создать базу пользовательских прав доступа, где мой персонал работает. Например, если они работают в клинике A, они могут только просматривать/добавлять/изменять данные для этой клиники A. Но если они зачисляются в этот район, они могут получить доступ ко всем этим клиникам в этом районе. Он отлично работает на функциональном представлении базы, но его убивает меня на основе класса. До сих пор мой код следующим образом:Django CBV с пользовательским декоратором
def restrict_klinik(function):
def wrapper(request,slug, *args, **kw):
klinikslug = request.user.letakstaf_set.filter(klinik__slug=slug).count()
retenslug = Reten.objects.filter(slug=slug).count()
rejectslug = Reject.objects.filter(slug=slug).count()
if klinikslug == 1 or retenslug == 1 or rejectslug == 1:
return function(request, slug, *args, **kw)
messages.error(request, 'Sorry, You dont have access.')
return HttpResponseRedirect(reverse_lazy('home'))
return wrapper
class RestrictKlinikMixin(views.LoginRequiredMixin):
@method_decorator(restrict_klinik)
def dispatch(self, *args, **kwargs):
return super(RestrictKlinikMixin, self).dispatch(*args, **kwargs)
Я использую @restrict_klinik для моей функции базовой точки зрения, но я получил проблему при использовании базового вида класса, например:
класса AddClinic (RestrictKlinikMixin, generic.CreateView):
он выбросит ошибку «slug». любые идеи? Благодаря!
UPDATE: Видимо 1 из моих взглядов, используя kwargs [ 'слизняка'] вместо [self.kwargs 'слизняк']. Забавно, что единственное, что я изменил, это добавление нового микса в мои взгляды. Потрачено как 4 часа, выбирая это, поскольку он отлично работает в течение 1 месяца, просто используя kwargs ['slug'].
Можете ли вы показать полную ошибку? – zymud
, по-видимому, я использовал kwargs ['slug'] вместо self.kwargs ['slug'] в одном из моих представлений .. исправил его ... но забавно, что он работает раньше. – resakse
Напишите и примите свой ответ, а не добавьте SOLVED в заголовок. Это помогает другим людям с аналогичными проблемами. – Holloway