Подправил вывод времени генерации
All checks were successful
Auto-Deploy-Shop / deploy (push) Successful in 8s
All checks were successful
Auto-Deploy-Shop / deploy (push) Successful in 8s
This commit is contained in:
11
core/context_processors.py
Normal file
11
core/context_processors.py
Normal file
@@ -0,0 +1,11 @@
|
||||
import os
|
||||
|
||||
|
||||
def env_and_timing(request):
|
||||
"""Provide ENV_TYPE and request timing info to templates."""
|
||||
env = os.getenv('ENV_TYPE', 'local')
|
||||
return {
|
||||
'env_type': env,
|
||||
'db_time': getattr(request, 'db_time', None),
|
||||
'total_time': getattr(request, 'total_time', None),
|
||||
}
|
||||
43
core/middleware.py
Normal file
43
core/middleware.py
Normal file
@@ -0,0 +1,43 @@
|
||||
import time
|
||||
from django.db import connection
|
||||
|
||||
|
||||
class TimingMiddleware:
|
||||
"""Middleware that measures request total time and DB query time.
|
||||
|
||||
Note: `connection.queries` is populated only when Django debug is enabled
|
||||
(DEBUG=True) or when using a debug cursor. When not available, DB time
|
||||
will be left as None.
|
||||
"""
|
||||
|
||||
def __init__(self, get_response):
|
||||
self.get_response = get_response
|
||||
|
||||
def __call__(self, request):
|
||||
start = time.time()
|
||||
|
||||
# record initial number of collected queries (if available)
|
||||
try:
|
||||
initial_q_count = len(connection.queries)
|
||||
except Exception:
|
||||
initial_q_count = 0
|
||||
|
||||
response = self.get_response(request)
|
||||
|
||||
total = time.time() - start
|
||||
|
||||
db_time = None
|
||||
try:
|
||||
qs = getattr(connection, 'queries', None)
|
||||
if qs:
|
||||
# sum only queries executed during this request
|
||||
new_queries = qs[initial_q_count:]
|
||||
db_time = sum(float(q.get('time', 0)) for q in new_queries)
|
||||
except Exception:
|
||||
db_time = None
|
||||
|
||||
# attach to request so context processor can read them
|
||||
request.db_time = db_time
|
||||
request.total_time = total
|
||||
|
||||
return response
|
||||
@@ -43,6 +43,7 @@ INSTALLED_APPS = [
|
||||
MIDDLEWARE = [
|
||||
'django.middleware.security.SecurityMiddleware',
|
||||
'django.contrib.sessions.middleware.SessionMiddleware',
|
||||
'core.middleware.TimingMiddleware',
|
||||
'django.middleware.common.CommonMiddleware',
|
||||
'django.middleware.csrf.CsrfViewMiddleware',
|
||||
'django.contrib.auth.middleware.AuthenticationMiddleware',
|
||||
@@ -64,6 +65,7 @@ TEMPLATES = [
|
||||
'django.template.context_processors.request',
|
||||
'django.contrib.auth.context_processors.auth',
|
||||
'django.contrib.messages.context_processors.messages',
|
||||
'core.context_processors.env_and_timing',
|
||||
],
|
||||
},
|
||||
},
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
<!-- templates/components/footer.html -->
|
||||
<footer class="bg-dark text-white text-center py-4 mt-5">
|
||||
<div class="container">
|
||||
<p>© 2023 Мой проект. Все права защищены.</p>
|
||||
<p>© 2026 Проект АСК. Все права защищены.</p>
|
||||
<p class="small mb-0">
|
||||
ENV: {{ env_type|default:"unknown" }}
|
||||
| Page generated in {{ total_time|default:"-"|floatformat:3 }}s
|
||||
|
||||
Reference in New Issue
Block a user