アプリにクラスベースのビューがたくさんあります。それらのほとんどは、認証されたスタッフ ユーザーのみがアクセスできるようにする必要があります。多くのクラスベースのビューにユーザーチェックを簡単に追加するにはどうすればよいですか?
標準関数ビューの場合、次のようなデコレータを追加しました:
def only_staff_allowed(fn):
'''decorator'''
def wrapped(request, *args, **kwargs):
if request.user.is_staff:
return fn(request, *args, **kwargs)
else:
return HttpResponseRedirect(reverse('moderator:login'))
return wrapped
@only_staff_allowed
def dashboard(request):
''' now accessible only by staff users '''
return render(request, 'moderator/dashboard.html', {})
このようなクラスベースのビューと同様のことを行うにはどうすればよいですか?
class AddressesAddList(ListView):
template_name = 'moderator/addresses/add_list.html'
queryset = Address.objects.filter(need_moderating=True)
paginate_by = 100
いくつかのミックスインを追加するか、いくつかのメソッドをオーバーライドする必要がありますか? それとも何か飾ってもいいですか?