Make組ブログ

Python、Webサービスや製品開発、ライブラリー開発についてhirokikyが書きます

Djangoのデバッグモードを動的に切り替えたい

DjagnoではsettingsモジュールのDEBUGの値(True/False)によってデバッグモードのオンオフができます。
ここで環境が開発or運用など複数ある場合に、各環境ごとにデバッグモードのオンオフを静的に設定するのは面倒。環境に応じて、DEBUGの値が動的に変わるようにしたい。


環境を判別する方法として、今回は環境変数SSH_CLIENTのポート番号を使ってみた。

#settings.py

import os

#SSHで繋いでおり、開発用サーバのSSHのポート(22)のときにTrue
DEBUG = os.environ.get('SSH_CLIENT', '').split(' ')[-1] == '22'

SSHで繋いでおり、そのポート番号が開発用サーバに設定した番号(ここでは22)と同じ場合にDEBUGがTrueにするようにした。前提としては 1.開発環境にはSSHで繋いで作業すること、 2.各環境に応じてSSH接続に使うポート番号が違うこと、の2つがあって気に入らない。あくまで暫定。Siteモデルを使って上手くできるかも。

@ukyoさんのdjango+mysqlでdotcloudを始める #dotcloud #git #django :右京webを参考にしています。この記事だと環境によってユーザ名が違う。