djangoで私のサイトの一番下にページをレンダリングするのにかかる時間はどのように表示されますか?私はdjangoのアプリケーションの流れが分からないので、どのように動作するのかわかりません。印刷ページ生成時間
答えて
ビューハンドラの開始時に、現在の日付/時刻を変数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 }}
...
を
django-debug-toolbarに興味があるかもしれませんが、このようなデバッグのためのリクエストタイマーとその他の有用な情報がたくさんあります。
生産中でも使ってみたい... – LordZardeck
ああ。本当に?ページを生成するのにどれくらいの時間がかかるのかをユーザーが知りたいのはなぜですか? ...私はコンテキストマネージャーを使って[digivampireの解決策](http://stackoverflow.com/a/10098487/344821)をしたいと思う。 – Dougal
私はいつも自分のページが0.1秒でレンダリングされているのを見せてくれたウェブサイトがそれをよりクールに見せてくれたと思っています。 :p – LordZardeck
- 1. PHP印刷時間前
これをグローバルに行う方法はありますか?すべてのビュー機能に追加する必要はありませんか? – LordZardeck
テンプレートピースは、すべてのページを継承する基本テンプレートに移動します。 'time_start'に関して最も簡単なことは、そのビューのデフォルトで提供されたコンテキストで' time_start'を設定するデコレータ内のすべてのビューをラップすることです。次に、すべてのビューの前に単純に適用します(ビューの実行が開始されてからテンプレート化がほぼ完了するまでの時間差が必要なので)。 – astevanovic
すべてのビューでデコレータを使用する代わりに、[コンテキストプロセッサ](https://docs.djangoproject.com/ja/dev/ref/templates/api/#writing-your-own-context-processors)を使用することもできます。 – Dougal