Как установить настройки.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, но часть проверки аутентификации заключается в функционировании представлений или рендеринге шаблона, что происходит позже, и нет возможности изменить установленные настройки.

Другие вопросы по тегам