Как установить настройки.DEBUG == True только для суперпользователя и False для всех пользователей
Я использую Django 2.1, и мой проект готов к производству. Есть ли способ, которым я могу установить параметры. Отладка == Истина только для суперпользователя и показать 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',]
2 ответа
Я нашел способ отладки приложения с помощью сервера разработки без изменения отладки. Для этого я создал файл 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, но часть проверки аутентификации заключается в функционировании представлений или рендеринге шаблона, что происходит позже, и нет возможности изменить установленные настройки.