FAQ: Django を使う¶
Why do I get an error about importing DJANGO_SETTINGS_MODULE
?¶
以下の点を確認してください:
- The environment variable
DJANGO_SETTINGS_MODULE
is set to a fully-qualified Python module (i.e.mysite.settings
). - その設定モジュールは
sys.path
の上にありますか (import mysite.settings
はうまくいきますか)。 - モジュールに構文エラーはありません。
テンプレート言語を好きになれません。どうしても使わないとだめですか?¶
私たちはこのテンプレートエンジンを chunky bacon 以来の傑作だと思っているのですが、テンプレート言語の選択というものは宗教に近いものがあるということは認識しています。Django では、テンプレート言語に対する制限はなにもありません。ですから、Jinja2 や Mako などを使いたいのなら、それは自由です。
付属のモデル/データベースレイヤを使わねばならないのですか?¶
いいえ、テンプレートシステムと同様、モデル/データベースレイヤはフレームワー クの他の部分と疎結合しています。
唯一の例外: 別のデータベースライブラリを使った場合には、 Django の自動生成管理サイトを利用できなくなります。 admin だけは Django のデータベースレイヤと密結合しています。
画像やファイルのフィールドはどう使うのですか?¶
モデルで FileField
や ImageField
を使うには、いくつかのステップを踏む必要があります:
- In your settings file, you'll need to define
MEDIA_ROOT
as the full path to a directory where you'd like Django to store uploaded files. (For performance, these files are not stored in the database.) DefineMEDIA_URL
as the base public URL of that directory. Make sure that this directory is writable by the web server's user account. - モデルに
FileField
やImageField
を追加し、upload_to
オプションを定義して、MEDIA_ROOT
のどのサブディレクトリにファイルをアップロードさせるのかを Django に教えます。 - データベースに保存されるのは、ファイルの (
MEDIA_ROOT
からの相対で表した) パスだけです。 URL を調べるには、 Django の提供し ている属性url
を使うことになるでしょう。例えば、mug_shot
という名前のImageField
を作ったなら、テンプレートで画像の URL を指定するには{{ object.mug_shot.url }}
と書きます。
どうやったら、全てのテンプレートで使える変数を定義できますか?¶
どのテンプレートでも同じデータを扱うことがたまにあります。よくある例は、動的生成のメニューです。一見、共通のディクショナリをテンプレートコンテキストに入れておくのが合理的に見えます。
Django では、RequestContext
を使うのが一番の方法です。詳しくはコンテキストのサブクラス RequestContext を使う を参照してください。