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