TekTek
書評が気になってしょうがない人のための書籍情報閲覧サービスTekTekをオープンしました。
こういう全日本&全世界公開型のサービスを作るのは経験不足ですが、まだいろいろ改善していきたいと思います。
ちなみにPythonとdjangoで作っています。
2008-03-29
TekTekをオープンしました
投稿者
hiroshiykw
時刻:
12:38 PM
2008-03-12
djangoのi18nのset_languageリダイレクトビュー
またしても国際化ではまった。
djangoの国際化機能で用意されている、言語選択のビューset_languageは、公式ドキュメントではPOSTで渡すことになっているようだが、これはおそらく開発版での話で、今自分が使っている0.97preの段階ではGETで渡さないといけないようだ。
djangoの開発とその文書への反映速度の速さはすばらしいと思う。
2008-03-02
djangoの国際化アプリをOSXで作る時にはまる事。
OSXでdjangoの国際化アプリを作る場合、メッセージファイルの作成make-messages.pyでこける。
これはgettextのバージョンが古いから。最新のgettextを入れるとなおる。
gettextのインストールは、これに従った。
2008-03-01
djangoのgeneric viewsのobject_listでPythonの普通のlistを表示する
(以下、あまり詳しく既存の情報を調べず、手元のdjangoのコードを読んで適当に作ったもの。。)
djangoのgenericviewsのobject_listは便利だが、デフォルトではmodelのレコードしか表示できない。
一般のリストの中身などを表示する場合は、リストオブジェクトを適切にラップしてあげる必要がある。
そういう状況はマッシュアップサイトなどを作っていると、model以外からアイテムリストを取得したりするので、よくありますね。
以下、そのサンプル。
※get()メソッドでの例外の投げ方はあまり詳しく調べてないので、いい加減です。エラーが出るかも。
※まだpagenationさせて動かしていないので、その辺はこれからテストします。
from django.views.generic.list_detail import object_list
from django.core.exceptions import ObjectDoesNotExist
def list2genericviews(lst):
class GenList(list):
model = "GenList"
DoesNotExist = ObjectDoesNotExist
def __init__(self, lst):
self.extend([{"id": i, "value": x} for i, x in enumerate(lst)])
def _clone(self):
return self
def filter(self, pk=None):
return self[pk]
def count(self):
return len(self)
def get(self):
if len(self) == 0:
raise self.DoesNotExist("No item found in GenList")
if len(self) > 1:
raise AssertionError("There are multiple items in GenList")
return self[0]
return GenList(lst)
def show_list(request):
items = ["apple", "banana", "orange"]
#引数template_nameは必須です。
return object_list(request, queryset=list2genericviews(items), template_name="itemlist.html")
テンプレートitemlist.htmlはこんな感じ。
{% if object_list %}
<ul>
{% for item in object_list %}
<li>{{ item.value }}</li>
{% endfor %}
</ul>
{% endif %}
2008-02-04
Macのある生活 (現実)
Macのある生活
こんなにオシャレなMacもしがない三十路独身男性の手にかかると、、、、
最初はもっと引いて撮ってましたが、あまりにもMacがかわいそうな部屋なので容赦してこの範囲だけ撮影。
投稿者
hiroshiykw
時刻:
1:15 AM
2008-01-29
mod_pythonでLD_LIBRARY_PATHの設定
http://www.troches.jp/content/view/131/66/
mod_pythonの設定をapacheのhttpd.confに書くときに、SetEnvでLD_LIBRARY_PATHなどを設定しても効き目がないそうだ。
/etc/init.d/httpd にexport LD_LIBRARY_PATH = ... と書くとよいとのこと。
ハイフンっぽい文字を一括で半角マイナスに変換
元ネタはこちら。 http://d.hatena.ne.jp/koseki2/20070927/unicodehyphen
hihuns = (u"\u002d", u"\u2212", u"\uff0d", u"\u30fc",
u"\u2012", u"\u2013", u"\u2014", u"\u2015", u"\u2500")
def to_han_hihun(s):
for x in hihuns:
s = s.replace(x, u"-")
return s