2012-08-03 26 views
0

我在網絡編程方面沒有太多經驗,所以我會盡量簡單地解釋一下這個問題。加載主頁之前的運行方法(CherryPy)

這裏是由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方法,該方法將文件的代碼加載到一些代碼中,最後,獲取包含所有內容的結果頁面。

現在,每次有人進入一個頁面時,我都希望執行該方法。問題在於它只能在服務器起點上運行。每次人們進入頁面時,它都會加載舊文件(方法不會被調用)。每次頁面加載時如何使它工作?

回答

0

最後我解決了這個問題。事情是,每次網絡啓動時,它都應該發送請求到服務器,接收答案並動態構建頁面。這可以通過Ajax完成。由於我使用jQuery,因此$ .post方法在處理中已退出。

對於所有這些新手而言,就像我一樣,我建議閱讀David Sawyer McFarland的「JavaScript和jQuery:缺少手冊」。祝你好運!

1

你的調用cherrypy.tree.mount不應該在索引方法內完成(儘管我不認爲這是你唯一的問題)。

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路徑必須是絕對路徑。請閱讀文檔this section

最後似乎你的配置會覆蓋索引方法本身,因爲兩者都會響應/。

+0

它沒有解決問題,但感謝您的有益建議。變化了嗎? – 2012-08-09 07:39:12