[英]Django - Turn settings.DEBUG to True for testing Swagger endpint
[英]How to set settings.DEBUG == True only for superuser and False for all users
我正在使用 Django 2.1,我的項目已准備好進行生產。 有沒有辦法只為超級用戶設置 settings.DEBUG == True 並為普通用戶顯示默認的 500 內部服務器錯誤。 我曾嘗試編寫一個中間件,但似乎不起作用。 我不想使用哨兵(很多地方都推薦)。 我的 middlewares.py 是:
import sys
from django.views.debug import technical_500_response
from django.conf import settings
from django.contrib.auth import get_user_model
user = get_user_model() #I am using CustomUser model not Django user model
class UserBasedExceptionMiddleware(object):
def __init__(self, get_response):
self.get_response = get_response
def __call__(self, request):
return self.get_response(request)
def process_exception(self, request, exception):
if request.user.is_superuser:
return technical_500_response(request, *sys.exc_info())
我也加載了我的中間件。
MIDDLEWARE = ['myproject.middlewares.UserBasedExceptionMiddleware',]
我認為這是不可能的。 設置文件從Django網站運行的一開始就確定了,但是認證檢查部分在視圖功能或模板渲染中,這是更晚的並且無法更改確定的設置。
我找到了一種使用開發服務器調試應用程序而不更改調試的方法。 為此,我制作了一個 debug_setting.py 文件(我的 settings.py 文件所在的位置)。
在我的 debug_setting.py 中:
from .settings import *
DEBUG = True
然后在終端中使用:
python manage.py runserver --settings=myproject.debug_setting 0.0.0.0:5000
我們可以在不更改生產環境的 DEBUG=True 的情況下查看應用程序錯誤的追溯。
更新:
或者,我們也可以使用 django 的錯誤報告系統,它會自動將 500 和 404 errros 連同整個回溯發送到 ADMINS = [] 和 MANAGERS = [] 中描述的郵件地址。 對於此功能,我們需要 smtp 設置,如 EMAIL_HOST、EMIL_HOST_UESR、EMAIL_HOST_PASSWORD。 詳細信息在這里https://docs.djangoproject.com/en/3.0/howto/error-reporting/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.