如何在Django项目中有2个不同的管理站点?

我想在Django项目中有2个单独的管理站点。

我的意思是单独的-他们应该具有单独的用户身份验证,他们应该管理不同的模型,并且具有不同的外观和URL。

我想要这样做的原因是客户希望使用单独的部分来管理页面的CMS部分,并希望将其单独用作“后台”解决方案。

我考虑过只在项目树中创建一个od django.contrib.auth应用程序副本,以不同的方式命名它,admin.site.register()并对两者使用单独的调用。这样,我可以在每个模型中使用其他模型,外观不同等。我不知道如何解决用户身份验证问题(我应该有其他用户才能登录CMS,然后登录BackOffice) 。

有人偶然做过此事,可以给我一些提示吗?还是我打算做的只是设计错误?

回答:

可以继承Django的子类AdminSite(例如,将其放在admin.py项目根目录中):

from django.contrib.admin.sites import AdminSite

class MyAdminSite(AdminSite):

pass

#or overwrite some methods for different functionality

myadmin = MyAdminSite(name="myadmin")

至少从1.9开始,你需要添加name参数以使其正常运行。这用于创建反向URL,因此名称必须是urls.py中的名称。

然后,你可以admin.py像处理普通AdminSite实例一样在应用程序中使用它:

from myproject.admin import myadmin

myadmin.register(MyModel_A)

你还需要为其定义一些网址(在项目的中urls.py):

from myproject.admin import admin, user_site

from myproject.admin import myadmin

urlpatterns = patterns('',

...

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

(r'^myadmin/', include(myadmin.urls)),

以上是 如何在Django项目中有2个不同的管理站点? 的全部内容, 来源链接: utcz.com/qa/404705.html

回到顶部