Personal tools

Nested scopes

Entry追加時にPreviewできる機能を追加していたわけです。Entry本体を表示するDTML(entry_html)では,EntryクラスのMethodを呼んでいます。Preview時にもこのentry_htmlを使いたい。そこで,REQUEST.formに必要なMethodをlambdaを使ってくっつけようと思い立ちました。

どうせならEntry追加時に日時指定できるようにもしたい。フォームから入力された日付の文字列を,DateTimeインスタンスにいったん変換する - つまり,lambdaでローカル変数(またはMethodの引数)を使う必要があるわけです。が,Python 2.1まではこれができないことをすっかり忘れて,10分くらいハマってました。Nested scopesとか呼ばれている問題ですね。LL Saturdayで説明したのにすっかり忘れてた。

2.1で"from __future__ import nested_scopes"すれば解消される。でも,COREBlogをインストールしているZopeインスタンスすべてにこれを強制するわけにはいかない。「2.2以上じゃないと動かないよ」,というのはもっと言えない。

結局,lambdaに引数として渡してやると目的のことができるんだけど,書き方としては美しくないよなあ。

あと,REQUEST.form使った時点でZPTでモジュール書きづらくなっちゃったなあ。ZPT嫌いだからいいけど。重いし:-p。けっきょくデザイナーと技術者の分業なんてきれいにいかないし。

The URL to Trackback this entry is:
http://coreblog.org/ats/156/tbping

Re: Nested scopes

Posted by kom at 2003-12-08 01:23

Entryを追加する時、Previewをしたいなぁと思ったときはstatusをCloseにして、追加して、Viewでみてました。( ソースにちょっと手を加えました。一行だけですが;-) )

今後はEntryを追加する時は必ずPreviewするようなつくりになるということですか?

Re: Nested scopes

Posted by ats at 2003-12-08 01:30

>komさん
>今後はEntryを追加する時は必ずPreviewするようなつくりになるということですか?

Previewしたければできるし,一度も確認しなくても追加できます

Add comment

You can add a comment by filling out the form below. Plain text formatting.

(Required)
(Required)
(Required)
(Required)
コメントスパム避けのための認証文字列です

Captcha Image

Pythonな求人
r = urlopen("http://www.webcore.co.jp/recruit")
About this blog
■Author
atsこと柴田淳です。Atsushiはガイジンにうまく発音して頂けないので,これからはJunというペンネームで行こうと思っていましたがあんまり使ってません。
Webcore株式会社 代表取締役
■TRIVIAL TECHNOLOGIES 2.0
トリビアル・テクノロジー 2.0,「トリテク 2.0」と呼んでください。
Blog(ブログ)サイトです。Plone上で動く,オープンソースのBlog Product - COREBlog2を使っています。
 
最近書いた本,Mook
みんなのPython Webアプリ編
Pythonの基礎から,Webアプリやフレームワークの仕組みまで,つまることなく一気に学べる書籍です。「みんなのPython」と一緒に読んでください:-)。
みんなのPython
Pythonの入門書です。基本的なことから分かりやすく解説するよう勤めました。Pythonをはじめたいと思っている人,JavaやC++,PerlやRubyを学ぼうと思って躓いてしまった人はぜひ読んで下さい。
 

Powered by Plone, the Open Source Content Management System