将Allauth的login_required装饰器添加到Baton的Autodiscover Admin子类中。可以通过创建一个新的Mixin类来实现此目的,并在其上使用Baton的默认Admin子类。
示例代码:
from django.contrib.admin.views.decorators import staff_member_required
from allauth.account.decorators import login_required
class AllauthLoginRequiredMixin:
@classmethod
def as_view(cls, **initkwargs):
view = super().as_view(**initkwargs)
return login_required(view)
class MyModelAdmin(AllauthLoginRequiredMixin, admin.ModelAdmin):
pass
在这个示例中,我们创建了一个名为AllauthLoginRequiredMixin的新Mixin,该Mixin使用allauth.account.decorators中的login_required装饰器,将其添加到Admin视图中。然后,我们创建了一个新的MyModelAdmin类,并在AllauthLoginRequiredMixin和admin.ModelAdmin类上使用它。最后,我们可以将MyModelAdmin用作要保护的模型的Admin类。
需要注意的是,我们使用Baton时,通常不需要使用Django的默认login_required或staff_member_required装饰器,因为这些装饰器已经由Baton处理。因此,在上面的示例中,我们没有使用Django的staff_member_required装饰器,而是仅使用了Allauth的login_required装饰器。