def _security_middleware():
return ("django.middleware.security.SecurityMiddleware" in settings.MIDDLEWARE_CLASSES or
settings.MIDDLEWARE and "django.middleware.security.SecurityMiddleware" in settings.MIDDLEWARE)
python类MIDDLEWARE_CLASSES的实例源码
def _xframe_middleware():
return ("django.middleware.clickjacking.XFrameOptionsMiddleware" in settings.MIDDLEWARE_CLASSES or
settings.MIDDLEWARE and "django.middleware.clickjacking.XFrameOptionsMiddleware" in settings.MIDDLEWARE)
def check_duplicate_middleware_settings(app_configs, **kwargs):
if settings.MIDDLEWARE is not None and settings.MIDDLEWARE_CLASSES != global_settings.MIDDLEWARE_CLASSES:
return [Warning(
"The MIDDLEWARE_CLASSES setting is deprecated in Django 1.10 "
"and the MIDDLEWARE setting takes precedence. Since you've set "
"MIDDLEWARE, the value of MIDDLEWARE_CLASSES is ignored.",
id='1_10.W001',
)]
return []
def _legacy_get_response(self, request):
"""
Apply process_request() middleware and call the main _get_response(),
if needed. Used only for legacy MIDDLEWARE_CLASSES.
"""
response = None
# Apply request middleware
for middleware_method in self._request_middleware:
response = middleware_method(request)
if response:
break
if response is None:
response = self._get_response(request)
return response
def _csrf_middleware():
return ("django.middleware.csrf.CsrfViewMiddleware" in settings.MIDDLEWARE_CLASSES or
settings.MIDDLEWARE and "django.middleware.csrf.CsrfViewMiddleware" in settings.MIDDLEWARE)
def _session_middleware():
return ("django.contrib.sessions.middleware.SessionMiddleware" in settings.MIDDLEWARE_CLASSES or
settings.MIDDLEWARE and "django.contrib.sessions.middleware.SessionMiddleware" in settings.MIDDLEWARE)
def _security_middleware():
return ("django.middleware.security.SecurityMiddleware" in settings.MIDDLEWARE_CLASSES or
settings.MIDDLEWARE and "django.middleware.security.SecurityMiddleware" in settings.MIDDLEWARE)
def _xframe_middleware():
return ("django.middleware.clickjacking.XFrameOptionsMiddleware" in settings.MIDDLEWARE_CLASSES or
settings.MIDDLEWARE and "django.middleware.clickjacking.XFrameOptionsMiddleware" in settings.MIDDLEWARE)
def check_duplicate_middleware_settings(app_configs, **kwargs):
if settings.MIDDLEWARE is not None and settings.MIDDLEWARE_CLASSES != global_settings.MIDDLEWARE_CLASSES:
return [Warning(
"The MIDDLEWARE_CLASSES setting is deprecated in Django 1.10 "
"and the MIDDLEWARE setting takes precedence. Since you've set "
"MIDDLEWARE, the value of MIDDLEWARE_CLASSES is ignored.",
id='1_10.W001',
)]
return []
def _legacy_get_response(self, request):
"""
Apply process_request() middleware and call the main _get_response(),
if needed. Used only for legacy MIDDLEWARE_CLASSES.
"""
response = None
# Apply request middleware
for middleware_method in self._request_middleware:
response = middleware_method(request)
if response:
break
if response is None:
response = self._get_response(request)
return response
def __init__(self, *args, **kwargs):
# `NoCacheMiddlware` depends on `request.sso_user`, which comes from
# `SSOUserMiddleware
assert (
'sso.middleware.SSOUserMiddleware' in settings.MIDDLEWARE_CLASSES
)
super().__init__(*args, **kwargs)
def test_autopatching_middleware_classes(self):
ok_(django._datadog_patch)
ok_('ddtrace.contrib.django' in settings.INSTALLED_APPS)
eq_(settings.MIDDLEWARE_CLASSES[0], 'ddtrace.contrib.django.TraceMiddleware')
eq_(settings.MIDDLEWARE_CLASSES[-1], 'ddtrace.contrib.django.TraceExceptionMiddleware')
def test_autopatching_twice_middleware_classes(self):
ok_(django._datadog_patch)
# Call django.setup() twice and ensure we don't add a duplicate tracer
django.setup()
found_app = settings.INSTALLED_APPS.count('ddtrace.contrib.django')
eq_(found_app, 1)
eq_(settings.MIDDLEWARE_CLASSES[0], 'ddtrace.contrib.django.TraceMiddleware')
eq_(settings.MIDDLEWARE_CLASSES[-1], 'ddtrace.contrib.django.TraceExceptionMiddleware')
found_mw = settings.MIDDLEWARE_CLASSES.count('ddtrace.contrib.django.TraceMiddleware')
eq_(found_mw, 1)
found_mw = settings.MIDDLEWARE_CLASSES.count('ddtrace.contrib.django.TraceExceptionMiddleware')
eq_(found_mw, 1)
def test_autopatching_middleware(self):
ok_(django._datadog_patch)
ok_('ddtrace.contrib.django' in settings.INSTALLED_APPS)
eq_(settings.MIDDLEWARE[0], 'ddtrace.contrib.django.TraceMiddleware')
ok_('ddtrace.contrib.django.TraceMiddleware' not in settings.MIDDLEWARE_CLASSES)
eq_(settings.MIDDLEWARE[-1], 'ddtrace.contrib.django.TraceExceptionMiddleware')
ok_('ddtrace.contrib.django.TraceExceptionMiddleware' not in settings.MIDDLEWARE_CLASSES)
def test_user_info_with_non_django_auth(django_elasticapm_client, client):
with override_settings(INSTALLED_APPS=[
app for app in settings.INSTALLED_APPS
if app != 'django.contrib.auth'
]) and override_settings(MIDDLEWARE_CLASSES=[
m for m in settings.MIDDLEWARE_CLASSES
if m != 'django.contrib.auth.middleware.AuthenticationMiddleware'
]):
with pytest.raises(Exception):
resp = client.get(reverse('elasticapm-raise-exc'))
assert len(django_elasticapm_client.events) == 1
event = django_elasticapm_client.events.pop(0)['errors'][0]
assert event['context']['user'] == {}
def test_user_info_with_non_django_auth_django_2(django_elasticapm_client, client):
with override_settings(INSTALLED_APPS=[
app for app in settings.INSTALLED_APPS
if app != 'django.contrib.auth'
]) and override_settings(MIDDLEWARE_CLASSES=None, MIDDLEWARE=[
m for m in settings.MIDDLEWARE
if m != 'django.contrib.auth.middleware.AuthenticationMiddleware'
]):
with pytest.raises(Exception):
resp = client.get(reverse('elasticapm-raise-exc'))
assert len(django_elasticapm_client.events) == 1
event = django_elasticapm_client.events.pop(0)['errors'][0]
assert event['context']['user'] == {}
def test_user_info_without_auth_middleware(django_elasticapm_client, client):
with override_settings(MIDDLEWARE_CLASSES=[
m for m in settings.MIDDLEWARE_CLASSES
if m != 'django.contrib.auth.middleware.AuthenticationMiddleware'
]):
with pytest.raises(Exception):
client.get(reverse('elasticapm-raise-exc'))
assert len(django_elasticapm_client.events) == 1
event = django_elasticapm_client.events.pop(0)['errors'][0]
assert event['context']['user'] == {}
def test_user_info_without_auth_middleware_django_2(django_elasticapm_client, client):
with override_settings(MIDDLEWARE_CLASSES=None, MIDDLEWARE=[
m for m in settings.MIDDLEWARE
if m != 'django.contrib.auth.middleware.AuthenticationMiddleware'
]):
with pytest.raises(Exception):
client.get(reverse('elasticapm-raise-exc'))
assert len(django_elasticapm_client.events) == 1
event = django_elasticapm_client.events.pop(0)['errors'][0]
assert event['context']['user'] == {}
def _csrf_middleware():
return ("django.middleware.csrf.CsrfViewMiddleware" in settings.MIDDLEWARE_CLASSES or
settings.MIDDLEWARE and "django.middleware.csrf.CsrfViewMiddleware" in settings.MIDDLEWARE)
def _session_middleware():
return ("django.contrib.sessions.middleware.SessionMiddleware" in settings.MIDDLEWARE_CLASSES or
settings.MIDDLEWARE and "django.contrib.sessions.middleware.SessionMiddleware" in settings.MIDDLEWARE)