0

私は Web プログラミングの経験があまりないので、問題を簡単に説明しようと思います。

以下は、CherryPy (cherrypy.quickstart(SLA_App())) によって実行されるクラスのメイン メソッドです。

class SLA_app(Object):
    def index(self):
       global files;
       files=[...]
       createTable.createTable(files, '20/06/2012', '03/07/2012')
       cherrypy.tree.mount(SLA_App(), '/', 
        config = { '/': { 'tools.staticdir.on' :True,
       'tools.staticdir.dir' : 'some/dir',
       'tools.staticdir.index' : 'cherry.html' } 
        })
        return open('cherry.html')
    index.exposed = True

CherryPy サーバーを作成しました。メインページが読み込まれるたびに、メソッドを実行する必要があります。このメソッドは、一部のファイルに HTML コードを生成します。これは createTable.createTable(files) で行われます。たとえば、 insert.html を作成します。ロードしているメインページには、ファイルのコードをいくつかにロードするjqueryメソッドがあり、最終的にすべてを含む結果のページを取得します。

さて、誰かがページに入るたびに、そのメソッドを実行したいと思います。問題は、サーバーの開始点でのみ機能することです。ユーザーがページにアクセスするたびに、古いファイルが読み込まれます (メソッドは呼び出されません)。ページが読み込まれるたびに動作させるにはどうすればよいですか?

4

2 に答える 2

1

cherrypy.tree.mount への呼び出しは index メソッド内で行うべきではありません (ただし、ここでの唯一の問題ではないと思います)。

class SLA_app(Object):
    def index(self):
       global files;
       files=[...]
       createTable.createTable(files, '20/06/2012', '03/07/2012')

       return open('cherry.html')
    index.exposed = True

cherrypy.tree.mount(SLA_App(), '/', 
    config = { '/': { 'tools.staticdir.on' :True,
   'tools.staticdir.dir' : 'some/dir',
   'tools.staticdir.index' : 'cherry.html' } 
    })

createTable が何をするのかわかりませんが、一度実行する必要がある場合は、そのインデックス メソッドからも抽出してください。また、staticdir ツールを使用する場合、dir パスは絶対パスでなければならないことに注意してください。ドキュメントのこのセクションをお読みください。

最後に、両方が /.

于 2012-08-08T07:13:11.587 に答える
0

最後に、私は問題を解決しました。問題は、Web が起動するたびに、要求をサーバーに送信し、応答を受け取り、ページを動的に構築する必要があるということです。これは Ajax で実現できます。jQueryを使っているので、$.postメソッドは使い物にならなくなりました。

これに不慣れなすべての人に、私と同じように、David Sawyer McFarland による「JavaScript と jQuery: The Missing Manual」を読むことをお勧めします。幸運を!

于 2012-08-08T13:47:16.683 に答える