FAQ: Django を使う¶
DJANGO_SETTINGS_MODULE のインポートにまつわるエラーが出るのですが、なぜですか?¶
以下の点を確認してください:
- 環境変数 - DJANGO_SETTINGS_MODULEが完全指定の Python モジュールになっている (例:- mysite.settings)。
- その設定モジュールは - sys.pathの上にありますか (- import mysite.settingsはうまくいきますか)。
- モジュールに構文エラーがないこと。 
テンプレート言語を好きになれません。どうしても使わないとだめですか?¶
私たちはこのテンプレートエンジンを chunky bacon 以来の傑作だと思っているのですが、テンプレート言語の選択というものは宗教に近いものがあるということは認識しています。Django では、テンプレート言語に対する制限はなにもありません。ですから、Jinja2 や Mako などを使いたいのなら、それは自由です。
付属のモデル/データベースレイヤを使わねばならないのですか?¶
いいえ、テンプレートシステムと同様、モデル/データベースレイヤはフレームワー クの他の部分と疎結合しています。
唯一の例外: 別のデータベースライブラリを使った場合には、 Django の自動生成管理サイトを利用できなくなります。 admin だけは Django のデータベースレイヤと密結合しています。
画像やファイルのフィールドはどう使うのですか?¶
モデルで FileField や ImageField を使うには、いくつかのステップを踏む必要があります:
- 設定ファイル内で - MEDIA_ROOTを指定します。この値は、 Django がアップロードされたファイルを置く場所にします (パフォーマンス上の理由から、ファイルをデータベースに置くことはありません)。- MEDIA_URLをそのディレクトリの公開 URL にします。ディレクトリは Web サーバのユーザアカウントに対して書き込み可能にしておかねばなりません。
- モデルに - FileFieldや- ImageFieldを追加し、- upload_toオプションを定義して、- MEDIA_ROOTのどのサブディレクトリにファイルをアップロードさせるのかを Django に教えます。
- データベースに保存されるのは、ファイルの ( - MEDIA_ROOTからの相対で表した) パスだけです。 URL を調べるには、 Django の提供し ている属性- urlを使うことになるでしょう。例えば、- mug_shotという名前の- ImageFieldを作ったなら、テンプレートで画像の URL を指定するには- {{ object.mug_shot.url }}と書きます。
どうやったら、全てのテンプレートで使える変数を定義できますか?¶
どのテンプレートでも同じデータを扱うことがたまにあります。よくある例は、動的生成のメニューです。一見、共通のディクショナリをテンプレートコンテキストに入れておくのが合理的に見えます。
Django では、RequestContext を使うのが一番の方法です。詳しくはコンテキストのサブクラス RequestContext を使う を参照してください。