2012-03-14 15 views
1

私はかなりの数の構造化されていないページを持っている可能性があり部位のセットのための小規模なサイトのフレームワークを構築している - 彼らが持っている意味:ページあたり編集可能な構造化されていないページ

  • 若干異なるレイアウトの
  • ロットを私は、クライアントが(私はこのプロジェクトのためのDjangoを使用しています)私の管理UIを介してこれらのページの内容を編集できるようにしたいモデル

から一回限りのテキスト

  • なし/非常に少ない生成されたコンテンツ、B私は、ページHTMLに公開されず、フィールドとして指定したページの部分だけを編集できるという要件を持っています。例えば:

    • タイトル
    • テキストコンテンツ
    • の数ブロック定義済みの画像位置、これらのフィールドは、ページ間を大幅に変化

    を埋め込む必要

  • PDFファイルのおそらくいくつかのブロック。

    レイアウトと、これらのページに必要なフィールドは開発者によって指定されるため、これを動的に生成する必要はありません。

    私が今までに持っていた「最良の」アイデアは、ユーザーが編集してそれらのブロックをシリアル化し、リレーショナルデータベースの「ページ」テーブル/モデルに格納するか、 MongoDBまたはそれに類するもの。

    概念的には、どのようにそのようなページを実装しますか?前述したように、私はDjangoを使用していますので、Djangoに固有の実装提案は歓迎しますが、一般的な高レベルの考えも素晴らしいでしょう。

  • 答えて

    2

    IはアップロードPDF /画像/などにコンテンツ(テキスト場合)またはパスを収容するであろう、.kind(ヘッダ、テキスト、イメージ、PDF)および.dataを有するContentBlockモデルを実装することになります。おそらく、あなたは定義されている適切なブロックとページをハードコーディングしたい - 私はちょうどなど、ハードコードナメクジ、例えば、'home-title', 'home-intro', 'about-title', 'about-text', 'about-right-photo'

    を使用すると思い、私はDjangoのadminインタフェースを使用してないお勧めします。これは、同種の非ビジネスロジックモデルの編集にはるかに適しています。私はちょうどブロックの適切なフォームフィールドをレンダリングする編集ビューを追加したいと思っています - htmlエディタ、ファイルアップロードなど。これはDjangoの管理者で行うことは可能ですが、私の経験では問題はありません。独自の編集ビューを作成すると、残りのサイトと同じ基本テンプレートを使用することができます。これは、IMOがより優れたユーザーエクスペリエンスです。 django-frontendadminとともにdjango-boxes

    +0

    私にとっては良い解決策のようです。ありがとう! – Tom

    1

    はここであなたのためにそれを行うアプリケーションのカップルです。