Personal tools
You are here: Home Wiki PythonScript
FrontPage >> Log >>

PythonScript

Document Actions
last edited 7 years ago
  • 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 を使いたければ同様に行を追加

 
そちらのOSの時刻なので 正確性はあなた次第
 
こういう意味のないの好き
 
本をお勧め中
 
CDもお勧め中
のだめカンタービレ ベスト100
ドラマの演奏とは違います。でもこの感じでこの価格ならアリかと
 
消耗品や家電
 
よく使うサイト
社名ロゴ88×631
 
ぐぐってみる
 
誰が使うんだろう
 

Powered by Plone