因为我使用我自己的身份验证和授权系统(使用我自己的用户/权限模型),我想从Django
完全禁用这个标准应用程序。
我尝试从MIDDLEWARE_CLASSES
和INSTALLED_APPS
中删除相关行,但是当我使用syncdb命令时,仍然会创建默认身份验证系统附带的默认表。有没有办法防止这种情况发生?我的主要问题是标准表覆盖了我想用于自己的auth系统的表。
INSTALLED_APPS = (
'django.contrib.sessions',
'form_utils',
'org',
'auth',
'entities',
)
我也试过用项目包来前置应用程序,这没有效果。
是不是还有其他我忽略的场景?其他可能的变量,可能导致这些标准的应用程序被启用,尽管我的努力?
我也不使用内置的管理系统,所以我不认为这可能是一个问题。
其他信息:我最近升级了Django 1.2到1.3。这可能是我的问题的原因吗?
编辑:显然,这个问题是由Django 1.3中的更改引起的。相关门票在这里:http://code.djangoproject.com/ticket/15735
有什么提示吗
2条答案
按热度按时间ddrv8njm1#
我相信身份验证模块是由RequestContext引入的。
默认情况下,设置TEMPLATE_CONTEXT_PROCESSORS包括django. contrib. auth. context_processors. auth.
我没有遇到django创建auth数据库表的问题,但它在'user'键下将AnonymousUser对象插入到我的上下文和会话中,即使我已经从INSTALLED_APPS和MIDDLEWARE_CLASSES设置中删除了auth模块。
我从TEMPLATE_CONTEXT_PROCESSORS中删除了该项,事情开始以我所期望的方式工作。
从1.2到1.3的升级可能意味着你开始使用基于类的通用视图(这很棒),或者你开始使用RequestContext而不是普通的上下文命令。无论哪种方式,当auth作为上下文处理器提供时,django的行为就像auth在你安装的应用程序中一样,不管你是否真的想要它。
我希望这能有所帮助。
z3yyvxxp2#
如果您使用的是DRF,您仍然会遇到此问题。
在您的www.example.com中添加这些行settings.py,它将解决问题
问题是UNAUTHENTICATED_USER的默认值是AnonymousUser(来自contrib.auth)。所以如果你不想提供你自己的设置而不把它设置成其他的值(如果你不使用auth,很可能),你会得到这个警告。