我有一个Django应用程序,它完全从apis获取数据。所以我不用用数据库。会话数据存储在签名的cookie上。我试图编写一个自定义用户模型和一个定制的auth后端,就像在文档上那样,但是我得到了以下错误:django.core.exceptions.ImproperlyConfigured: AUTH_USER_MODEL refers to model 'my_app.MyUser' that has not been installed
我的settings.py:
AUTH_USER_MODEL = 'my_app.MyUser'
AUTHENTICATION_BACKENDS = ('django.contrib.auth.backends.ModelBackend',
'my_app.backends.LoginAuthBackend',)
models.py:
class MyUser(object):
def save(self):
pass
objects = None
username = ""
在这里,如果尝试使用来自django的AbstractUser而不是对象,我得到了以下错误:AttributeError: 'NoneType' object has no attribute '_meta'
或db表不退出。
backends.py
class LoginAuthBackend(object):
def authenticate(self, username=None, password=None):
if username and password:
try:
response = my_auth_function(username, password)
if response.status_code == 200:
token = response.get('my_key')
user = MyUser()
return user
except MyCustomException:
return None
快把我逼疯了。看起来像Django,没有DB就不容易使用。
编辑
经过几次尝试后,解决这个问题的一个简单方法是将'django.contrib.auth.backends.ModelBackend'
从AUTHENTICATION_BACKENDS
中删除,从设置中删除AUTH_USER_MODEL
。这种模式基本上是一样的。工作平稳
发布于 2017-06-07 22:08:32
在AUTHENTICATION_BACKENDS
设置中定义了默认的身份验证后端处理器集。请参阅自定义认证的Django文档。
默认情况下,AUTHENTICATION_BACKENDS设置为: 'django.contrib.auth.backends.ModelBackend‘ 这是检查Django用户数据库并查询内置权限的基本身份验证后端。
因此,如果不希望使用django.contrib.auth.backends.ModelBackend
身份验证方法,请将其从列表中删除。您可能希望找到(或创建)另一个,并将其添加到列表中。
https://stackoverflow.com/questions/36556226
复制相似问题