[英]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.contenttypes
和django.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.