首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >没有数据库的Django Rest框架

没有数据库的Django Rest框架
EN

Stack Overflow用户
提问于 2016-08-23 09:58:14
回答 4查看 17.6K关注 0票数 21

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

以下是我在settings.py中的Django Rest框架配置

代码语言:javascript
复制
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.contenttypesdjango.contrib.auth的最小设置?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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

更改后的配置将如下所示:

代码语言:javascript
复制
REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [],
    'DEFAULT_PERMISSION_CLASSES': [],
    'UNAUTHENTICATED_USER': None,
}
票数 23
EN

Stack Overflow用户

发布于 2016-08-23 10:21:59

如果确实被迫使用数据库,但不想使用数据库,则可以将:memory:与SQLite后端一起使用,如下所示:

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': ':memory:',
    }
}

这使用内存中的数据库,这样您的文件系统就不会被访问.

因为内存是不稳定的,所以您可能需要在每次web应用程序启动时自动运行迁移。

票数 17
EN

Stack Overflow用户

发布于 2016-08-23 10:03:13

你没有任何选择。DATABASES dict应该在settings.py。你可以用这个:

代码语言:javascript
复制
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39098008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档