如何完全禁用django.contrib.auth?

时间:2011-04-01 07:51:19

标签: django django-authentication django-syncdb

因为我正在使用自己的身份验证和授权系统(使用我自己的用户/权限模型),所以我想从Django完全禁用此标准应用。

我尝试删除MIDDLEWARE_CLASSESINSTALLED_APPS中的相关行 INSTALLED_APPS = ( 'django.contrib.sessions', 'form_utils', 'org', 'auth', 'entities', ) ,但是当我使用syncdb命令时,默认表 默认身份验证系统附带的仍然存在 创建。有没有办法防止这种情况发生?我的主要问题是标准表覆盖了我想用于我自己的auth系统的表。

{{1}}

我也尝试使用项目包预先添加应用程序,这没有效果。

我可能会忽略另一种设置吗?其他可能 尽管可能导致这些标准应用程序启用的变量 我的努力?

我也不使用内置的管理系统,所以我不这么认为 可能是个问题。

其他信息:我最近将Django 1.2升级到1.3。这可能是我问题的原因吗?

编辑:显然,这个问题是由Django 1.3的变化引起的。相关票证在此处:http://code.djangoproject.com/ticket/15735

任何提示?

1 个答案:

答案 0 :(得分:6)

我相信认证模块是由RequestContext引入的。

默认情况下,TEMPLATE_CONTEXT_PROCESSORS设置包括django.contrib.auth.context_processors.auth。

我没有django创建auth数据库表的问题,但它是在我的上下文中插入AnonymousUser对象而在'user'键下我的会话,即使我从我的INSTALLED_APPS中删除了auth模块和MIDDLEWARE_CLASSES设置。

我从TEMPLATE_CONTEXT_PROCESSORS中删除了该项目,并且事情开始按照我期望的方式工作。

在你的情况下从1.2升级到1.3可能意味着你开始使用基于类的通用视图(这很棒),或者你可能开始使用RequestContext而不是普通的上下文dicts。无论哪种方式,似乎当auth作为上下文处理器给出时,django表现得好像auth在你安装的应用程序中,无论你是否真的想要它。

我希望这是有帮助的。

相关问题