当前位置: 首页 > 面试题库 >

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

井誉
2023-03-14
问题内容

我想在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)),


 类似资料:
  • 我正在从事两个不同的项目,都使用不同的maven文件 当我在项目之间切换时,它会重新下载存储库文件夹中的所有maven依赖项,删除以前项目的依赖项 是否有任何方法可以使用两个,并为两个项目维护不同的存储库。

  • 问题内容: 有一个令人毛骨悚然的项目,其中包含多个spider。我有什么方法可以定义为哪个spider使用哪个管道?并非我定义的所有管道都适用于每个spider。 问题答案: 在Pablo Hoffman的解决方案的基础上,你可以在对象的方法上使用以下装饰器,以便它检查你的Spider属性是否应执行。例如: 为了使此装饰器正常工作,蜘蛛程序必须具有管道属性,其中包含要用于处理项目的管道对象的容器,

  • 我试图使用django创建一个项目,并填充数据库,我的问题是,当我尝试创建一个新对象时,我得到了这个错误:重复键值违反了唯一约束,因为数据库已经填充,我可以做什么来更改它,使Postgres管理它或Djang0获得正确的序列?提前感谢

  • 问题内容: 默认情况下,Django Django Django管理站点显示相关模型/表的所有记录以供查看。如何仅显示符合特定条件的记录? 问题答案: 在管理员定义中,你可以定义一个返回该模型管理员的查询集的方法。例如: 然后,只有的对象在管理员中可见。

  • 本文向大家介绍django站点管理详解,包括了django站点管理详解的使用技巧和注意事项,需要的朋友参考一下 管理界面是基础设施中非常重要的一部分。这是以网页和有限的可信任管理者为基础的界面,它可以让你添加,编辑和删除网站内容。Django有自己的自动管理界面。这个特性是这样起作用的:它读取你模式中的元数据,然后提供给你一个强大而且可以使用的界面,网站管理者可以用它立即工作。 Django的管理

  • 问题内容: 我有一个绑定了单个IP的Linux服务器。我想在此IP上的此服务器上托管多个Node.js站点,每个站点(显然)都具有唯一的域或子域。我希望它们都在端口80上。 我有什么选择呢? 一个明显的解决方案似乎是让所有域都由一个node.js Web应用程序提供服务,该Web应用程序充当代理并传递给在唯一端口上运行的其他node.js应用程序。 问题答案: 选择以下之一: 使用其他一些服务器(