---
title: "FAQ: Django を使う"
version: 1.9
locale: ja
source: https://docs.djangoproject.com/ja/1.9/faq/usage/
canonical: https://djangodocs.dev/ja/1.9/faq/usage/
---
# FAQ: Django を使う

## DJANGO\_SETTINGS\_MODULE の import にまつわるエラーが出るのですが、なぜですか？

以下の点を確認してください:

- 環境変数 DJANGO\_SETTINGS\_MODULE が完全指定の Python モジュール名になっていますか (たとえば “mysite.settings”)。
- 設定モジュールは sys.path の上にありますか (import mysite.settings はうまくいきますか)。
- (言うまでもなく) モジュールに構文エラーはありませんか。

## テンプレート言語を好きになれません。どうしても使わないとだめですか？

私達はこのテンプレートエンジンをchunky bacon 以来の傑作だと思っているんで すが、テンプレート言語の選択というものは宗教に近いものがあるということは認識しています。 Django では、テンプレート言語に対する制限はなんらありません。 ですから、 Jinja2 や Mako などを使いたいのなら、それは自由です。

## 付属のモデル／データベースレイヤを使わねばならないのですか？

いいえ、テンプレートシステムと同様、モデル／データベースレイヤはフレームワー クの他の部分と脱カップリングしています。

唯一の例外: 別のデータベースライブラリを使った場合には、 Django の自動生成 admin サイトを利用できなくなります。 admin だけは Django のデータベースレイ ヤとカップリングしています。

## 画像やファイルのフィールドはどう使うのですか？

モデルで [`FileField`](/ja/1.9/ref/models/fields/#django.db.models.FileField) や [`ImageField`](/ja/1.9/ref/models/fields/#django.db.models.ImageField) を使うには、いくつかのステップを踏む 必要があります:

1. 設定ファイル内で [`MEDIA_ROOT`](/ja/1.9/ref/settings/#std-setting-MEDIA_ROOT) を指定します。この値は、 Django がアップロードされたファイルを置く場所にします (パフォーマン ス上の理由から、ファイルをデータベースに置くことはありません)。 [`MEDIA_URL`](/ja/1.9/ref/settings/#std-setting-MEDIA_URL) をそのディレクトリの公開 URL にします。ディレク トリは Web サーバのユーザアカウントに対して書き込み可能にしておかね ばなりません。
2. モデルに [`FileField`](/ja/1.9/ref/models/fields/#django.db.models.FileField) や [`ImageField`](/ja/1.9/ref/models/fields/#django.db.models.ImageField) を追加し、 [`upload_to`](/ja/1.9/ref/models/fields/#django.db.models.FileField.upload_to)  オプションを定義して、 [`MEDIA_ROOT`](/ja/1.9/ref/settings/#std-setting-MEDIA_ROOT)  のどのサブディレクトリにファイルをアップロードさせるのかを Django に教えます。
3. データベースに保存されるのは、ファイルの ([`MEDIA_ROOT`](/ja/1.9/ref/settings/#std-setting-MEDIA_ROOT) からの相対で表した) パスだけです。 URL を調べるには、 Django の提供し ている属性 [`url`](/ja/1.9/ref/models/fields/#django.db.models.fields.files.FieldFile.url)  を使うことになるでしょう。例えば、 ```mug_shot` という名前の :class:`~django.db.models.ImageField` を作ったなら、テンプレートで画像の URL を指定するには ``{{ object.mug_shot.url }}``` と書きます。

## どうやったら、全てのテンプレートで使えるような変数を定義できますか？

どのテンプレートでも同じデータを扱うことがたまにあります。よくあるのは、メニューを動的に生成して出す場合です。この手の例では、どのテンプレートでも使えるデータの入った辞書をテンプレートコンテキストに入れておくのが合理的ですね。

`RequestContext` を使うのが正解です。詳しくは コンテキストのサブクラス: [Subclassing Context: RequestContext](/ja/1.9/ref/templates/api/#subclassing-context-requestcontext) を参照してください。
