- Python と PythonScript について 両方ともよく知らないのですが適当に書いてます。 - PythonScript へ引数を渡す 結構ハマりました。どうやって渡せばいいのかさっぱりわかんない。結論はシンプルで Edit タブにある Parameter List のところに、引数名(たとえば argx)を記述し、DTMLメソッドのほうで <dtml-var "myfunction(argx='100')"> とかすればよいだけでした。意外とこういうことは検索しても見付かりにくい・・・ - 呼ばれたページに戻る return container.REQUEST.RESPONSE.redirect(container.REQUEST.HTTP_REFERER) とすれば、スクリプトを呼びだしたページに戻ります。値は渡せませんので、呼びだしたページ側で dtml-var とかで get するページであるという前提になります。 - 値の渡しかたその二 form に記述しておくとそのname で REQUEST.from['name'] でアクセスできる。複数あるとリストになる。 - 値の戻しかた 呼ばれたページに値を戻す方法。container.REQUEST.HTTP_REFERER+('&retval=%d'%(number)) にリダイレクトすれば渡せなくもないけど、問題多いような気がする。 - MySQL との連携 複数の DB の 複数のテーブルにごりごりとアクセスするロクでもない方法は発見です。 - まず、Z MySQL Database Connection を必要な数だけ作ります(database 別とかホストとか) - 次に 上と同数の Z SQL Method を作ります。Connection ID は上のそれぞれのDBを指定し、Argumentは「無し」、メソッドは <dtml-var "REQUEST.form['host_query_tsoh']"> とでもします(Form で重なりそうにない名前ならなんでもよい) - host1db1, host1db2, host2db1, local と4つ作ったとします。 - 次に集約用 PythonScript を作ります。 parameter は dbent, dbquerystr とし、内容は container.REQUEST.form['host_query_tsoh'] = dbquerystr return dbent() です。これを querySQL とします。 - そうすると、任意の PythonScript から container.querySQL(dbent=host1db2, dbquerystr="select userid, name from privateuser where userid = %d"%(fooid)) のように呼べます。container を抜けば dtml-in で呼んで、DTML Method でくるくる回すのもできます。 - ただ、これやっちゃうと、オブジェクトの粒度を認識しないとOOの意味がそーとー減衰されるので注意です。 # 動きますけどね - PythonScript から DTML Method を引数付きで呼びだす container.mydtmlmethod(None, container.REQUEST, varname1='ひとつめの変数の値です', varname2='次の変数です') で呼びだせます。 - 好きな module を使う - Products にテキトーなディレクトリを切ります。 Global とか - そこに __init__.py を書きます。 from Products.!PythonScripts.Utility import allow_module allow_module(’csv’) CSV を使いたい。re を使いたければ同様に行を追加