※ 商品のリンクをクリックして何かを購入すると私に少額の報酬が入ることがあります【広告表示】 djblogkitにAjaxで関連コンテンツを操作できる機能を付けています。
2006年最後の状況をスクリーンキャストで公開します
なんとなく、無駄にAjaxです。
ムービーをみてもらってもわからないと思いますが、結構めんどうなバリデータを使っています。
面倒なのは、「ブログのエントリに設定した質問と答えによる、コメントのバリデータ」と「関連コンテンツに指定可能なモデル以外ははじくバリデータ」ですが、Djangoはバリデータをシンプルかつ容易に設定できるので、実は簡単です。管理インターフェースでも変梃なカスタムバリデータを使えることがわかってもらえると思います。バリデータだけではなく、本文の入力箇所に好きなWYSIWYGエディタを仕込むとかいうことも簡単にできます。
以下、特徴
ログインしているユーザに対しては、表画面で関連コンテンツ設定用のAjaxコントローラ(見た目に難ありw)を出すようにしています。AjaxはJavaScriptをたくさん読み込んでうざいので、ログインしていない場合にはJavaScriptの読み込みもしていません。
テンプレートの継承をいかしているので、エントリ詳細ページ以外にはログインをしていてもJavaScriptの読み込みはありません。
関連コンテンツに指定可能にするためには、モデルにいくつかの定義を追加するだけです。検索項目を統一するために独自の統一メタデータを定義するようなことはしたくないので、管理インターフェース用の定義を使って検索する項目を決定しています。検索時に、あえてコンテンツタイプを指定しているのは、ノード数が増えたときに網羅的に検索にいくのは馬鹿げているからで、すべてなめるのが不可能な訳ではありません。
関連コンテンツに設定されているオブジェクトを削除すると、自動的に関連コンテンツの設定が解除されます。もちろん、管理インターフェースからの削除で構いません(Pythonシェルからでも大丈夫)。
関連コンテンツのモデルは、インラインか否かのフラグを設定可能で、インラインの場合には、モデルごとにインライン表示用のテンプレートを指定できます。
追加した機能のデザインが大きな難となっている ため、いつになるかはわかりませんが、もう少しましにして公開します。