美しいDjangoの設定

Djangoで書かれたプロジェクトを実装している間に、展開を簡素化するための簡単なテクニックが蓄積されました。 最新のプロジェクトの1つで使用されたsettings.pyを分析しましょう。 ファイル全体は、 http://gist.github.com/214361で入手できます。

始めましょう。



ローカル設定:


ローカル設定により、異なるマシンで同じプロジェクトの異なる構成を使用できます。 各settings.pyファイルの最後に、接続local_settings.pyがあります。 これにより、settings.pyの変数値をオーバーライドできます。 たとえば、本番サーバーではmysqlを使用し、ローカルマシンではsqlliteを使用します。

try :

from local_settings import *

except ImportError :

pass









デバッグフラグ:




DEBUG = True / Falseを手動で変更する代わりに、Djangoが実行されているサーバーを特定し、フラグを自動的に変更します。 複数のサイト(テストサーバー、QAサーバー)がある場合-スキャンにドメインを追加するだけです。

if socket . gethostname() == 'your.domain.com' :

DEBUG = False

else :

DEBUG = True









メディアファイルへのパス:


PROJECT_PATH = os . path . realpath(os . path . dirname(__file__))

MEDIA_ROOT = os . path . join(PROJECT_PATH, 'media' )







最初の行では、プロジェクトディレクトリのルートに保存するsettings.pyファイルへのパスを保存する変数を作成します。メディアフォルダーもそこにあります。 したがって、プロジェクトの展開場所に関係なく、メディアへのフルパスを自動的に構築できます。 PROJECT_PATHは、サードパーティアプリケーションのセットアップにも便利です。



必要なもののみを使用します。


if DEBUG:

TEMPLATE_CONTEXT_PROCESSORS += ( 'django.core.context_processors.debug' ,)

if USE_I18N:

TEMPLATE_CONTEXT_PROCESSORS += ( 'django.core.context_processors.i18n' ,)

if DEBUG:

MIDDLEWARE_CLASSES += ( 'debug_toolbar.middleware.DebugToolbarMiddleware' ,)







たぶん私は少し細心ですが、実際に使用されているものだけがプロジェクトに含まれているのが大好きです。 したがって、フラグを使用して超過分を破棄します。



テンプレートへのパス:


# Dir Structure

# + Application

# + templates

# + Application

# - someTemplate.html

# - models.py

# - views.py

# - otherAppSpecificFiles.py

# + OtherApplication

# + Templates

# - base.html

# - settings.py

# - urls.py

# - otherfiles.py

TEMPLATE_DIRS = ()

for root, dirs, files in os . walk(PROJECT_PATH)

if 'templates' in dirs: TEMPLATE_DIRS += (os . path . join(root, 'templates' ),)









テンプレートフォルダーはアプリケーションのルートに格納するため、簡単な回避策を使用してテンプレートへのフルパスを取得できます。



データベース接続設定:


# The database settings are left blank so to force the use of local_settings.py below

DATABASE_ENGINE = ''

DATABASE_NAME = ''

DATABASE_USER = ''

DATABASE_PASSWORD = ''

DATABASE_HOST = ''

DATABASE_PORT = ''









データベース設定は常に空のままにしておきます。これにより、ローカル設定「local_settings.py」に強制的に含まれるようになります。 開発にはsqlliteを使用し、本番にはmysql(またはpostgresql)を使用していますが、設定がlocal_settings.pyに保存されているため、settings.pyを安全にコミットおよび更新できます。



自分の経験にテクニックを適用する-役立ちます。 素晴らしい展開を!



All Articles