[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
だいぶ間が開きましたが前回の続きです。
Djangoのテンプレートの継承機能を用いて、ソースを書き直します。
イメージを書いてみました。何がなにやらわかりませんが、そこはお手数ですが個々人でイマジネーションを働かせてください。
あとは、Baseとなるテンプレートを拡張した各画面のテンプレートを作成して、
それを読み込んでrenderするだけですね。
うまくいきました!
さて、テンプレートの継承機能を用いるところまでは、Djangoのリファレンスサイトを見ればあっさり終わったのですが、新たな問題が出現してきました。
現在開発にはPleiades Eclipse 3.3のPython開発用セットを用いています。この開発セットにはWTPが含まれていて、HTMLやCSSなどを編集する際にはWTPのHTMLエディタを使用することになっています。ここまではOK。
問題はこのHTMLエディタ、フォーマット機能があまりにもひどいのです。
まともにインデントを考慮してくれず、非常に汚いフォーマットにされてしまいます。
いったいどうしてこんなフォーマットになってしまうのかを探るため、Google先生にいろいろとお尋ねしてみたのですが、満足な結果が得られず・・・
ここで腹をくくって、Eclipse WTPのサイトからWTPプラグインのソースコードを実際にダウンロードして調査してみることにしました。
Eclipse Web Tools Platform (WTP) Downloads
さて、ソースコードをダウンロードしてきたのはよいのですが、いったいどこを見ればHTMLファイルをフォーマットしているソースを見ることが出来るのかさっぱりわかりません。
悩んでいても仕方がないので、ダウンロードしてきたソースコードフォルダ全体のsrc.zipファイルに対して、"format"という文字列が含まれていないか、サクラエディタでgrepをかけてみることにしました。
ビンゴ!
160件もヒットしました。zipファイルといえどもファイル名だけは普通にテキストエディタで見えるんですね。
いかにもそれっぽいあたりを解凍してソースを読んでみました。
すると・・・
/** */ protected void formatNode(IDOMNode node, HTMLFormatContraints contraints) { if (node == null) return; if (node.hasChildNodes()) { // container formatChildNodes(node, contraints); } else { // leaf IStructuredDocumentRegion flatNode = node.getStartStructuredDocumentRegion(); if (flatNode != null) { String source = flatNode.getText(); if (source != null && source.length() > 0) { setWidth(contraints, source); } } } }
・・・え?コレダケ?
ぱっと見た感じ「setWidth()」しかしていません。
要するに・・・文章の横幅の設定に合わせてテキスト全体の折り返しをしているだけ!?インデントの調整とか一切なし!?
なるほど、WTPのHTMLエディタ付属のフォーマット機能は使えねえということだけがはっきりとわかりました。
仕方がないので外部のフォーマッターを使いましょう。
問題はDjango独自のタグ・・・{{}}ですとか{##}ですとか{%%}ですとか・・・が入るので、普通のhtmlフォーマッターは使えないということです。
「django template 整形」とかで検索をかけてみましたが、やはりDjango専用のものは存在しないようです。また困りました。
どうしましょう、自作するしかないのか・・・と考えていた矢先。
急にひらめきが。
「HTMLにHTMLタグ以外のタグを埋め込む=PHP=そうだPHPのフォーマッターを使い回せるんじゃないか!」
php 整形 - Google 検索
PHPスクリプトの基本構造/PHP入門
さすがは歴史のあるPHP、たくさんフォーマッターが見つかりました。
あとはこの中から改造が容易そうな奴を選んで、PHPタグを判定しているところをDjangoテンプレートのタグに変更してやればよいのです。楽勝楽勝。
とりあえず本日はここまで。
集中力が続かないなぁ・・・寺に行って座禅して修行かなぁ・・・
10 | 2024/11 | 12 |
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
横幅900px以上、Firefox 3, Safari 3, Opera 9.5, Chrome 0.2以上。IE7ギリギリ対応。IE6未対応。