没有数据库的Django Rest框架

Kia*_*ian 8 python django django-rest-framework

我正在尝试使用Django Rest Framework设置一个简单的API,问题是我的API没有任何数据库,但如果没有数据库设置,框架将无法工作.

这是我的Django Rest Framework配置settings.py:

INSTALLED_APPS = [
    'provider',
    'django_nose',
    'rest_framework',
    'django.contrib.contenttypes',
]

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [],
    'DEFAULT_PERMISSION_CLASSES': [],
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误是:

配置不正确("settings.DATABASES未正确配置."django.core.exceptions.ImproperlyConfigured:settings.DATABASES配置不正确.请提供ENGINE值.检查设置文档以获取更多详细信息.

是否有任何不包含的最小设置django.contrib.contenttypesdjango.contrib.auth

And*_*ini 9

如果你真的被迫使用数据库但你不想这样做,你可以使用:memory:SQLite后端,如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': ':memory:',
    }
}
Run Code Online (Sandbox Code Playgroud)

这使用内存数据库,因此不会触及您的文件系统.

由于内存是易失性的,因此您可能需要在每次启动Web应用程序时自动运行迁移.


Kia*_*ian 9

问题的实际原因是DRF尝试向其添加user属性request.文件中简要提到,机制如下:

如何确定身份验证

如果没有类进行身份验证,request.user则会将其设置为实例 django.contrib.auth.models.AnonymousUser

因此,它需要django.contrib.auth应用程序正确运行,因此django.contrib.auth需要数据库的工作配置才能执行.

此问题的解决方案是将settings UNAUTHENTICATED_USER属性设置为None.

更改后配置将如下所示:

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [],
    'DEFAULT_PERMISSION_CLASSES': [],
    'UNAUTHENTICATED_USER': None,
}
Run Code Online (Sandbox Code Playgroud)