我正在尝试使用Django Rest Framework来设置一个简单的API,问题是我的API没有任何数据库,但是如果没有数据库设置,这个框架就无法工作。
以下是我在settings.py中的Django Rest框架配置
INSTALLED_APPS = [
'provider',
'django_nose',
'rest_framework',
'django.contrib.contenttypes',
]
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [],
'DEFAULT_PERMISSION_CLASSES': [],
}我得到的错误是:
ImproperlyConfigured("settings.DATABASES配置不当。"django.core.exceptions.ImproperlyConfigured: settings.DATABASES配置不当。请提供发动机的价值。有关更多详细信息,请查看设置文档。
是否有不包括django.contrib.contenttypes和django.contrib.auth的最小设置?
发布于 2016-08-23 12:19:05
造成此问题的实际原因是DRF尝试向user添加request属性。文件中简要提到了这一机制,具体如下:
如何确定身份验证 如果没有类进行身份验证,
request.user将被设置为django.contrib.auth.models.AnonymousUser的一个实例。
因此,它需要django.contrib.auth应用程序正确运行,因此django.contrib.auth需要数据库的工作配置才能执行。
此问题的解决方案是将设置UNAUTHENTICATED_USER属性设置为None。
更改后的配置将如下所示:
REST_FRAMEWORK = {
'DEFAULT_AUTHENTICATION_CLASSES': [],
'DEFAULT_PERMISSION_CLASSES': [],
'UNAUTHENTICATED_USER': None,
}发布于 2016-08-23 10:21:59
如果确实被迫使用数据库,但不想使用数据库,则可以将:memory:与SQLite后端一起使用,如下所示:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': ':memory:',
}
}这使用内存中的数据库,这样您的文件系统就不会被访问.
因为内存是不稳定的,所以您可能需要在每次web应用程序启动时自动运行迁移。
发布于 2016-08-23 10:03:13
你没有任何选择。DATABASES dict应该在settings.py。你可以用这个:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}https://stackoverflow.com/questions/39098008
复制相似问题