7

因为我使用的是我自己的身份验证和授权系统(使用我自己的用户/权限模型),所以我想从Django.

我已经尝试从MIDDLEWARE_CLASSESand 中删除相关行INSTALLED_APPS,但是当我使用 syncdb 命令时,默认身份验证系统附带的默认表仍在创建中。有没有办法防止这种情况发生?我的主要问题是标准表覆盖了我想用于我自己的身份验证系统的表。

INSTALLED_APPS = (
    'django.contrib.sessions',
    'form_utils',
    'org',
    'auth',
    'entities',
)

我也尝试在应用程序之前加上项目包,这没有效果。

是否有我忽略的另一个设置?尽管我努力,其他可能导致这些标准应用程序启用的变量?

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

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

编辑:显然,此问题是由 Django 1.3 中的更改引起的。相关票在这里:http ://code.djangoproject.com/ticket/15735

有什么提示吗?

4

1 回答 1

6

我相信身份验证模块是由 RequestContext 拉进来的。

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

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

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

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

我希望这是有帮助的。

于 2011-11-06T01:30:54.533 回答