6

テンプレート内に空のcontentフィールドとそのコンテンツを持つフラットページがいくつかあります(template_nameフィールドで指定)。

私が使用している理由django.contrib.flatpages

  • これにより、最小限の URL 構成で (ほとんどの) 静的ページを提供できます。
  • それぞれのビューを書く必要はありません。

モデルがいらない理由FlatPage

  • コンテンツを空のままにして、テンプレート パスのみを指定します。したがって、ファイルにソースがあることを利用できます。
    • サーバー (管理者など) の助けを借りずに、ファイル システムからソースを直接編集できます。
    • 構文の強調表示やその他のエディター機能を利用できます。
  • モデルでは、フラットページの固定具を維持する必要があります。
    • したがって、同じエンティティのデータは 2 つの別々の場所にあります。
    • コンテンツをフィクスチャ内に移動すると、編集が難しくなります。
      • フィクスチャのメンテナンスが問題ではなかったとしても、開発中にこれらのフィクスチャを何度もダンプしてロードする必要がありました。

私が探しているもの

基本的; FlatPage機能を維持しながらモデルを削除しますcontrib.flatpages。これをどのように解決すべきか明確な考えがありません。データベース以外の場所で情報を取得するための( のようなadd_to_class)クリーンな変更方法があれば、それをお勧めします。FlatPagesおそらく、メタデータをテンプレートに挿入すると、このデータを読み取る特別なマネージャーが のデフォルトのマネージャーに取って代わりますFlatPages

フラットページの管理機能よりも手動編集を好まない場合、どうすればデータベースを方程式から外すことができますか?

4

1 に答える 1

9

汎用ビューを使用direct_to_templateすると、はるかに簡単になります。各ページにエントリを追加したくない場合は、1 つのビューで渡されたパラメーターを使用して、urls.py で実際のテンプレートを指定できます。

r'^foo/(?P<template_name>.+)/$','direct_to_template', {'template': 'foo_index.html'}),

次に、テンプレートを次のようにインポートしますfoo_index.html

{% include template_name %}
于 2008-12-06T22:08:59.773 に答える