2012-04-11 8 views
0

djangoで私のサイトの一番下にページをレンダリングするのにかかる時間はどのように表示されますか?私はdjangoのアプリケーションの流れが分からないので、どのように動作するのかわかりません。印刷ページ生成時間

答えて

1

ビューハンドラの開始時に、現在の日付/時刻を変数time_startに保存し、それをページをレンダリングするテンプレートコンテキストに渡します。

その後datetime.now()値に基づいてtimedeltaを作成するカスタムテンプレートフィルタを定義し、そのように、元の日時は、パラメータとして渡さ:

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/ja/dev/ref/templates/api/#writing-your-own-context-processors)を使用することもできます。 – Dougal

2

django-debug-toolbarに興味があるかもしれませんが、このようなデバッグのためのリクエストタイマーとその他の有用な情報がたくさんあります。

+0

生産中でも使ってみたい... – LordZardeck

+0

ああ。本当に?ページを生成するのにどれくらいの時間がかかるのかをユーザーが知りたいのはなぜですか? ...私はコンテキストマネージャーを使って[digivampireの解決策](http://stackoverflow.com/a/10098487/344821)をしたいと思う。 – Dougal

+0

私はいつも自分のページが0.1秒でレンダリングされているのを見せてくれたウェブサイトがそれをよりクールに見せてくれたと思っています。 :p – LordZardeck

関連する問題