Django decorator限制用户删除或更新其他条目
我的网站有用户和条目。我想创建一个Django装饰器来限制用户删除或更新其他条目。 但我已经做到了一些 我是这么想的Django decorator限制用户删除或更新其他条目,django,django-models,django-forms,django-templates,django-views,Django,Django Models,Django Forms,Django Templates,Django Views,我的网站有用户和条目。我想创建一个Django装饰器来限制用户删除或更新其他条目。 但我已经做到了一些 我是这么想的 class EntryUpdate(generic.UpdateView): model = Entry fields = ['...'] .... @user_passes_test(lambda user: current.user.id == entry.user.id) @method_decorator(login_requir
class EntryUpdate(generic.UpdateView):
model = Entry
fields = ['...']
....
@user_passes_test(lambda user: current.user.id == entry.user.id)
@method_decorator(login_required)
def dispatch(self, *args, **kwargs):
return super(EntryUpdate, self).dispatch(*args, **kwargs)
如果您已经在使用基于类的视图,请使用而不是decorator
from django.contrib.auth.mixins import UserPassesTestMixin
class EntryUpdate(UserPassesTestMixin, generic.UpdateView):
model = Entry
fields = ['...']
def test_func(self):
return self.request.user == self.get_object().user
如果您已经在使用基于类的视图,请使用而不是decorator
from django.contrib.auth.mixins import UserPassesTestMixin
class EntryUpdate(UserPassesTestMixin, generic.UpdateView):
model = Entry
fields = ['...']
def test_func(self):
return self.request.user == self.get_object().user
太棒了,成功了!!!但这是最好的方法吗??还有其他使用装饰的方法吗?如果你使用CBV,这是最好的方法,让基于函数的视图使用装饰器吧!创建它吧!!!但这是最好的方法吗??还有其他方法使用装饰吗?如果您使用CBV,这是最好的方法,请将装饰器的使用留给基于函数的视图