| この記事の要点 |
|---|
|
定数を返す関数を作る
settings.pyと同階層にconst.pyを作成する。
|
def consts(request): return { 'CONST_1': 'test1', 'CONST_2': 'test2', } |
settings.pyのcontext_processorsに上記のファイルを追加する。
|
TEMPLATES = [ |
※app1はconst.pyを置いたPythonパッケージのimport名です。表示用プロジェクト名ではありません。app1.const.constsはパッケージ・モジュール・関数の順です
適当なテンプレートで定数を出力させる。
|
<h1>テスト</h1> {{ CONST_1 }} {{ CONST_2 }} |
ファイル配置と登録パスをそろえる
元の関数・設定・テンプレート例は上に残しています。以下はwiki_configというパッケージ名を使う独立例です。自分の既存設定全体を置換せず、context_processorsへ1項目を追加してください。Django 6.0.7 / Python 3.12で実際のテンプレート描画を確認しました。
project/
manage.py
wiki_config/
__init__.py
settings.py
const.py
templates/
output.htmlwiki_configには空の__init__.pyを置き、プロジェクトのルートをPythonからimportできる状態にします。DJANGO_SETTINGS_MODULEがwiki_config.settingsなら、同じパッケージの関数はwiki_config.const.constsです。別のアプリにconst.pyを置く場合はそのアプリのimport名を使います。
wiki_config/const.py
def consts(request):
return {
'CONST_1': 'test1',
'CONST_2': 'test2',
}settings.pyで追加する項目
'wiki_config.const.consts',登録先はTEMPLATESの対象DjangoTemplatesエンジンのOPTIONS.context_processors配列です。既存のrequest・auth・messagesなどは残します。文字列はファイルパスや関数呼出しではなくimportパスであり、末尾に括弧を付けません。複数のエンジンがある場合は、この画面が使うエンジンへ追加します。
request付きでテンプレートを描画する
templates/output.html
<h1>テスト</h1>
{{ CONST_1 }}
{{ CONST_2 }}既存ビューへ組み込む断片
from django.shortcuts import render
def example(request):
return render(request, 'output.html', {})テンプレートの配置に合わせて既存TEMPLATES.DIRSやアプリ内templatesを設定し、既存URL設定へビューを登録します。上の断片だけでは公開URLはできません。登録されたcontext processorはrequestを伴う描画で呼ばれ、辞書のキーCONST_1・CONST_2がテンプレート変数になります。
実際に確認した出力
<h1>テスト</h1>
test1
test2バックエンドのTemplate.render({}, request)ではこの出力を確認しました。一方、同じテンプレートをrender({})とrequestなしで描画すると、定数は自動で渡されず、標準設定では未定義変数の場所は空文字になります。HTTPビューではrender(request, ...)のようにrequestを渡す形を使います。今回の検証はテンプレート実描画までで、本番URL・ミドルウェア全体の検証ではありません。
表示されないときの確認順
- 実際に読み込むsettings.pyとDJANGO_SETTINGS_MODULEを確認する。setting.pyという別ファイルへ書いていないか見る。
- const.pyの位置と登録文字列を照合する。Pythonからwiki_config.const.constsをimportできるか確認する。
- 関数が辞書を返すか、キー名とテンプレートの変数名・大文字小文字が合うか確認する。
- request付きで、設定したエンジンを使って描画しているか確認する。単なる文字列置換やrequestなしの描画では自動注入されない。
- ビューから同じキーを渡していないか確認する。今回の検証では明示contextのCONST_1がprocessorの値より優先された。
- 既存context_processorsを消していないか確認する。変更を読み込むため、運用手順に沿ってアプリプロセスを再起動する。
全テンプレートへ渡してよい値だけ公開する
context processorは表示に必要な共通値を渡すためのものです。settings全体・環境変数全体・SECRET_KEY・DBパスワード・APIトークンを辞書へ入れないでください。値が直接表示されていなくても、テンプレートから参照可能な範囲へ広げることになります。
関数は描画時に実行されるため、重いDB問い合わせや外部通信を定数注入のために行わない設計が基本です。表示用文字列をHTMLとして信頼せず、自動エスケープを維持してください。safeフィルタでHTML化して問題を隠す対処はしません。
公式資料: DjangoのRequestContextとcontext processors、renderショートカット(2026年10月確認)。
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript で base URL を取得する方法|window.location.origin
- 4 YouTube Data API v3 エラー一覧|403・400・404 の原因と対処
- 5 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 6 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 7 Spring Frameworkのアノテーション一覧
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- プロジェクトをTomcatプロジェクトとして認識させる方法 2026-10-07 22:32:50
- MySQLの1366 Incorrect string value|Laravelの文字コード・絵文字エラー 2026-10-07 21:54:03
- curlの証明書ホスト名不一致|旧エラー51・現行60の確認と対処 2026-10-07 21:54:03
- LaravelのMassAssignmentException|fillableの原因と安全な対処 2026-10-07 21:54:03
- Eclipse で Tomcat の起動ログがコンソールに出ない時の確認手順 2026-10-07 21:54:02
- MySQLにおける中央値(Median)の導き方(バージョン8未満) 2026-10-07 13:49:45
- getInputForward 2026-10-07 13:41:15
- JSONから配列に変換 2026-10-07 13:41:15
- ビューから値をモデルに格納しコントローラーで受け取る方法 2026-10-07 13:23:41
- Laravelのテーブル作成と定義変更|マイグレーション・up/down・注意点 2026-10-07 13:23:41
- NumPy 配列に要素を追加する方法 (append / concatenate) 2026-10-07 13:23:41
- MariaDB・MySQLで現在日時を取得する方法|NOW・タイムゾーン・保存型 2026-10-07 13:13:36
- 【django】テンプレートで定数を使用する方法 2026-10-07 13:10:15
- Spring BootにおけるApplication.propertiesの環境依存設定の分割方法 2026-10-07 12:09:35
- Not supported for DML operations【Springエラー】 2026-10-07 11:09:38