このコードを base.html で使用したいので、すべてのビューにコードを実装するのは少し難しいでしょうか?
カスタムを書きますtemplate context processor
。これを出発点として使用できます。
from datetime import datetime, time
from django.conf import settings
def calling_flag(request):
""" Sets the flag in the template if the current time is between CALL_HOURS """
if settings.CALL_HOURS:
now = datetime.now().time()
start_time,end_time = settings.CALL_HOURS
start_time = time(start_time[:2],start_time[-2:])
end_time = time(end_time[:2],end_time[-2:])
return {'IN_TIME': start_time <= now <= end_time}
アプリ内のファイルに保存します。アプリが という名前で、ディレクトリ内のfeedback
というファイルに上記のコードを配置したとします。次のステップでは、それを に追加します:custom_template_flags.py
feedback
settings.py
TEMPLATE_CONTEXT_PROCESSORS = (
# -- your other context processors
'feedback.custom_template_flags.calling_flag',
)
最後に、再び時間範囲を追加しますsettings.py
。
CALL_HOURS = ('0900','1700')
これで、すべてのテンプレート{{ IN_TIME }}
にどちらかTrue
またはのいずれかが含まれますFalse
。