如何在Django中为两个不同的管理面板分离身份验证逻辑



我已经实现了两个管理面板。一个用于超级用户,另一个用于卖家管理员。我可以通过Django的内置组和权限模块来分离逻辑,但我需要为这两个不同的管理面板提供不同的措辞和自定义设计。下面是我的两个管理面板的结构。

  1. 这是django的常用方式

urls.py

url(r'^admin/', admin.site.urls),

管理员.py

admin.site.register(modelname)

所以,管理面板的逻辑是完全好的。问题是将卖家和管理员彼此分开。所以,我用这个创建了不同的卖家面板,

  1. admin.py

    自定义管理面板

    from django.contrib.admin.sites import AdminSite
    class MyAdminSite(AdminSite):
    pass
    myadmin = MyAdminSite(name="myadmin")
    myadmin.register(User)
    

urls.py

url(r'^seller-panel/', include(myadmin.urls))

因此,在这里,我们有两个不同的管理面板的两个不同url。通过这个,我实现了不同的管理外观和网址。主要问题是区分这两个管理面板之间的登录。唯一的问题是

"管理员可以登录卖家管理面板,卖家可以登录超级用户管理面板">

我们可以通过两次自定义管理员登录来实现这个逻辑吗?或者组和权限通过is_staff选项是唯一的方法?

由于您的基本目标是为seller类型的用户重用管理视图和逻辑,并且您可能想要为这些用户提供更多的自定义视图和功能,因此我建议采用不同的方法。

与其让两种不同的管理类型具有不同的登录页面,不如像往常一样让seller用户成为在标准视图中具有登录和相应页面的常规用户。在那里(在网站的非管理部分),你可能想重用一些管理逻辑和模板。

最新更新