2012-04-11 3 views

ответ

1

В начале вашего обработчика вида сохраните текущую дату/время в переменной, скажем time_start, и передайте это контексту шаблона, который отображает страницу.

Затем определите пользовательский шаблон фильтра, который будет создавать timedelta на основе datetime.now() стоимости и первоначально DateTime передается в качестве параметра, как так:

from datetime import datetime 
from django import template 

register = template.Library() 

@register.filter 
def get_elapsed(time_start): 
    return str(datetime.now() - time_start) 

Затем в шаблоне, просто показать:

... 
{{ time_start|get_elapsed }} 
... 
+0

есть ли способ сделать это глобально? мне не нужно добавлять его в каждую функцию просмотра? – LordZardeck

+0

Шаблон должен перейти к шаблону базы, который вы наследуете для всех ваших страниц. Что касается 'time_start', то проще всего было бы обернуть все представления в декораторе, который устанавливает' time_start' в предоставленном по умолчанию контексте для этого представления. Затем вы просто применяете его перед каждым представлением (так как вы хотите разницу во времени между тем, когда началось представление и когда почти завершено создание шаблона). – astevanovic

+0

Вы также можете использовать [контекстный процессор] (https://docs.djangoproject.com/en/dev/ref/templates/api/#writing-your-own-context-processors) вместо использования декоратора во всех представлениях , – Dougal

2

Возможно, вас заинтересует django-debug-toolbar, который включает в себя таймер запроса и множество другой полезной информации для отладки таких вещей.

+0

Я хочу использовать в производстве, хотя ... – LordZardeck

+0

Oh. В самом деле? Почему ваши пользователи хотят знать, сколько времени потребовалось для создания страницы? ... Я предполагаю, что вы хотите [решение digivampire] (http://stackoverflow.com/a/10098487/344821) с менеджером контекста. – Dougal

+0

Я всегда думал, что веб-сайты, которые показывали, что их страница отображается в течение 0,1 **** секунд, казались более прохладными, так что, я думаю, я просто хочу, чтобы она выглядела. :п – LordZardeck

Смежные вопросы