以下の点を確認してください:
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 }}
と書きます。どのテンプレートでも同じデータを扱うことがたまにあります。よくある例は、動的生成のメニューです。一見、共通のディクショナリをテンプレートコンテキストに入れておくのが合理的に見えます。
RequestContext
を使うのが正解です。詳しくはコンテキストのサブクラス RequestContext を使う を参照してください。
3月 30, 2019