主页加载前的运行方法(CherryPy)

时间:2012-08-03 18:17:11

标签: python jquery webserver 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方法,该方法将文件的代码加载到某些页面,最后一个获取所有内容的结果页面。

现在,每当有人进入页面时,我希望该方法被执行。问题是它只在服务器起点起作用。每当人们进入页面时,它将加载旧文件(不会调用方法)。如何在每次加载页面时使其工作?

2 个答案:

答案 0 :(得分: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工具时,您的目录路径必须是绝对路径。请阅读文档的this section

最后看来你的配置会覆盖索引方法本身,因为它们都会响应/。

答案 1 :(得分:0)

最后我解决了这个问题。问题是每次web启动它都应该将请求发送到服务器,接收答案并动态构建页面。这可以通过Ajax来完成。由于我使用jQuery,$ .post方法在处理时退出了。

对于所有新手,就像我一样,我建议阅读David Sawyer McFarland撰写的“JavaScript和jQuery:The Missing Manual”。祝你好运!