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

时间:2017-01-02 06:10:01

标签: python django django-views django-admin

我一直在实施两个管理面板。一个用于超级用户,另一个用于让我们说卖家admin.I可以通过Django的内置组和权限模块分离逻辑,但我需要为这两个不同的管理面板提供不同的措辞和自定义设计。我的2个管理面板的结构如下。

  1. 这是django的常用方式,
  2. urls.py

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

    admin.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)
      
    2. urls.py

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

      所以,这里我们有两个不同的URL用于两个不同的管理面板。通过这个我实现了不同的管理员外观和网址。主要问题是区分这两个管理面板之间的登录。唯一的问题是

        

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

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

1 个答案:

答案 0 :(得分:0)

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

不是使用不同的登录页面制作两种不同的管理员类型,而是使seller个用户成为常规用户,并使用标准视图中的登录和相应页面。在那里(在网站的非管理员部分)你可能想要重用一些管理逻辑和模板。