簡體   English   中英

沒有數據庫的Django Rest框架

[英]Django Rest Framework Without Database

我正在嘗試使用Django Rest Framework設置一個簡單的API,問題是我的API沒有任何數據庫,但如果沒有數據庫設置,框架將無法工作。

這是我在settings.py Django Rest Framework配置:

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

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [],
    'DEFAULT_PERMISSION_CLASSES': [],
}

我得到的錯誤是:

配置不正確(“settings.DATABASES未正確配置。”django.core.exceptions.ImproperlyConfigured:settings.DATABASES配置不正確。請提供ENGINE值。檢查設置文檔以獲取更多詳細信息。

是否有任何最小設置不包括django.contrib.contenttypesdjango.contrib.auth

如果你真的被迫使用數據庫但你不想這樣做,你可以使用:memory: with SQLite后端,如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': ':memory:',
    }
}

這使用內存數據庫,因此不會觸及您的文件系統。

由於內存是易失性的,因此您可能需要在每次啟動Web應用程序時自動運行遷移。

問題的實際原因是DRF嘗試向request添加user屬性。 文件中簡要提到,機制如下:

如何確定身份驗證

如果沒有類進行身份驗證,則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,
}

你沒有任何選擇。 DATABASES dict應該在settings.py 你可以用這個:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

[未測試]也許你可以使用虛擬后端。 我看到django有一個:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.dummy',
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM