[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。
2週間ぐらい前から、Google App Engineで動かすためのアプリケーションを作成しています。
進捗状況はといえば、要件定義がだいたい終わって、ようやくそれらしい画面のレイアウトを作るのに成功したという程度で、あまり芳しくありません。
HTMLやCSSに詳しくなかったり、DjangoどころかPython自体初心者なので調べ物をしながら進めているのが主な遅延原因でしょうか・・・
ともかく!Djangoのテンプレートエンジンを使用して出来た画面がこちらです。
この程度の画面を作るのに休みを丸一日つぶしてしまったなんて・・・
やはり実際に手を動かして作ってみると、自分のスキルのなさが如実にわかっていいですね。もっと勉強してやろうという気になります。
閑話休題。画面の説明をします。
いわゆるよくあるヘッダ+右サイドバー付きのコンテンツ+フッタで構成される画面ですが、個人的にテーブルでレイアウトを作るのが大嫌いなので、なんとしてでもCSSだけで綺麗にレイアウトを作ってやろうと考えました。
しかしCSSでどうやって2段構成を作っているのかなんてまるでわかりません。
Google先生に聞いてみたところ、一番良い解答を返してくださったのがこちら。
Learn CSS Positioning in Ten Steps: position static relative absolute float
実際に10ステップのチュートリアルを踏まえて、CSSをどのように設定すればどのようなレイアウトが作れるのかが説明されています。ひとまずはここのやり方をパク・・・拝借しました。
↓こちらが先ほどの画面のテンプレート用のソース。
↓そしてこちらがCSSのソース。
↓最後に、pythonスクリプト(リクエストハンドラ)のソース。
見ての通り、リクエストハンドラの中で複数のテンプレートを読み込んで、
それをテンプレートパラメータとしてメインのテンプレートに埋め込むという手法をとってます。
この方法で問題ないのかと思っていたのですが、
実はDjangoにはテンプレートの継承という機能があることがわかりました。
テンプレートの継承とプロトタイプ | スパムとか
Django | The Django template language: For template authors | Django Documentation
1:すべての親になるテンプレートを作成し、{% block %}タグを埋め込む。
2:{% extends %}タグを利用して、親テンプレートのblockタグを実装した子テンプレートを作る
3:子テンプレートをrenderする
この手順を踏むことで、今回のようにわざわざ5種類ものテンプレートをインクルードしたりしなくてもすむみたいです!明日、早速試してみます。
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未対応。