goo blog サービス終了のお知らせ 

NopTea Memo

いろいろなメモ (外部記憶?)

Python:テンプレートエンジンMakoの、テンプレート内での外部ファイルincludeについて

2011-04-21 16:39:18 | Daily memo
PythonのテンプレートエンジンMakoで、
テンプレート内で外部ファイルをincludeする方法と、
読み込む外部ファイルを動的に変更する方法について簡単なまとめ。

■基本的なパターン
ディレクトリ構造と各ファイルの内容は下図のようになっているものとします。

ディレクトリ構造
├─ /html
│  ├ main.html
│  ├ header.html
│  └ footer.html
└─ main.py

各ファイルの内容
header.html ----------------------
<hr />
This is header!<br />
<hr />
--------------------------------

footer.html ----------------------
<hr />
This is footer!<br />
<hr />
--------------------------------

main.html -----------------------
<html>
<head><title>main</title></head>
<body>
<%include file="header.html" />
Hello world!<br />
<%include file="footer.html" />
</body>
</html>
--------------------------------

includetest.py --------------------
# -*- coding: utf-8 -*

from mako.template import Template
from mako.lookup import TemplateLookup

mylookup = TemplateLookup(directories=['./'], output_encoding="utf-8", encoding_errors='replace')
mytemplate = Template(filename="./html/main.html", input_encoding="utf-8", output_encoding="utf-8", lookup=mylookup)

print mytemplate.render()
--------------------------------

実行結果 -------------------------
<html>
<head><title>main</title></head>
<body>
<hr />
This is header!<br />
<hr />

Hello world!<br />
<hr />
This is footer!<br />
<hr />

</body>
</html>

--------------------------------


注意点はincludetest.py内の

>mylookup = TemplateLookup(directories=['./'], output_encoding="utf-8", encoding_errors='replace')

でdirectoriesを'./html/'ではなく'./'としているところ。

'./html/'にすると

mako.exceptions.TemplateLookupException: Cant locate template for uri u'html/header.html'

と怒られてしまいます。

■テンプレート内でincludeする外部ファイルを動的に変更

<%include file="${includefilename}" />
のようにテンプレート名を変数にして、includeするファイルを動的に変更することもできます。



pythonインストール

2011-03-21 23:03:16 | Linux
Ubuntu 10.10 Server に pythonbrew を使ってpythonインストールする際に
入れておくパッケージメモ

apt-get install build-essential
apt-get install libghc6-zlib-dev curl zlibc tcl-trf-dev libreadline-dev



edy のキャンペーン

2011-03-11 09:51:25 | Daily memo
http://www.edy.jp/edytomo/

というキャンペーンが行われている
使い始める時は、つかってみるとお得かな

ServersMan@VPSで個人的なSVNリポジトリを作成する

2010-10-18 20:02:44 | Daily memo
趣味で専用サーバーを借りたりするのはもったいないので、
VPSの格安レンタルサーバーを借りてみました。
ついでにSVNリポジトリ作ってみたり

DTI ServersMan@VPS 申し込み
http://dream.jp/vps/index.html?dhub
Entryプラン(月額480円)
OS:CentOS
ディスクセット(標準パッケージ

で申し込み。
契約から数分で使用可能に、らくちん。

下記ページを参考にSVN構築
■バージョン管理システム構築(Subversion)
http://centossrv.com/subversion.shtml

クライアントにSVNクライアントを導入
SmartSVN 6.6.2 for Mac OS X
http://www.syntevo.com/smartsvn/index.html

コミット時に「権限がありません」というエラーが出るので、
とりあえず
chown -R 777 /var/www/svn
としたらコミット出来るようにはなった。
が、なにかが間違っている気が。。。

Pythonはデフォルトで2.4が入っていたので2.6を入れたいところ。

gdd2010jp

2010-10-03 18:00:35 | Daily memo
9 月 28 日に開催された、Google Developer Day 2010 Japanに行ってきました。
今回行ったのは京都のサテライト会場でしたが、来年は東京会場に行きたいと思います。

万博公園行ってきました

2010-08-09 18:31:11 | Daily memo
今日は営業の補佐でガンバ大阪さんに行ってました。
サッカーチームの事務所にお伺いするのは初めてなので楽しかったです。

ついでに太陽の塔を見物して帰りました^ー^

VPSサービス

2010-05-07 12:39:23 | Linux
気になるVPSサーバ
DTI ServersMan@VPS
saases Osukiniサーバ

どちらも500円ぐらいからプランがある。
やー、いい時代になったものです。

というわけで DTI ServersMan VPS PRO申し込んでみた。

WordPressのウィジェットを作ってみたり

2010-04-06 05:01:05 | Daily memo
WordPressで構築されているサイト上に、複数のTwitterアカウントの発言を表示したいという要望だったのだけど

・複数インスタンス対応のTwitterウィジェットが見つけられなかった(ありそうな気がするんで、探し方が悪いのか)
・JavaScriptでやると、プライバシーポリシーの警告が出るのでうっとうしい

というわけで、WordPress2.8以降対応のTwitter発言表示プラグインを作ってみたりしました。

サーバー上のウィジェット(PHP)からTwitter APIを通じて発言を取得する仕組みなのですが、単なる発言の取得だけでも150リクエスト/時間という制限があるため、サーバー上にキャッシュを保存しといて、最大60リクエスト/時間になるように作ったり(最初はキャッシュしないで常に取得するようにしていたのだけど、すぐに制限を超えてしまった。。。ていうか、エラーになってから制限があることに気づいたorz)

納品物じゃなくて、要望を満たすために勝手に作ったフリーソフトというつもりなので、ソース公開とかしてもいいよなあ?と思っているのですが、どうなんでしょ?また確認してみます

ちなみに自分(nop)のtwitterアカウントは@kobekkoですよろしく^-^

gakkenflex

2010-02-03 07:17:30 | Daily memo
学研大人の科学Vol.25買いました。
ふろくの二眼レフカメラ、gakkenflexです。

撮影はVQ1015です、なんか黒い塊にしか見えませんな

メッシュ

2009-10-19 13:29:53 | Daily memo
いらなくなった無線LANのルータ、PCなどを再利用して
メッシュネットワークを作製する方法がないか模索中

なんかアイデアないでしょうか?
あるいや「前に作ったよ^-^」みたいな情報募集