1

我有一个带有一些静态 WEB 页面(文档)的 WEB 应用程序。我希望可以从运行在cherrypy下的应用程序访问文档(用html编写),也可以作为静态文件,我们可以在不运行WEB服务器的情况下打开......

class AppServer( JFlowServer ):

    @cherrypy.expose
    def index(self, **kwargs):
        return " ".join( open(os.path.join(WEB_DIR, "index.html" )).readlines() )


    @cherrypy.expose
    def test(self, **kwargs):
        return " ".join( open(os.path.join(WEB_DIR, "test.html" )).readlines() )

这很好用,但是由于我确实有多个页面,因此来自cherrypy的链接应该是“/test”,而在静态模式下我有“/test.html”。我想让cherrypy映射URL,但我找不到这样做的方法......

谢谢你的帮助,杰罗姆

4

1 回答 1

3

staticdir您可以使用工具并在文档中使用相对 URL来实现它。后者也可以从http://file://协议访问。

这是它的样子。

.
├── app.py
└── docs
    ├── a.html
    ├── b.html
    └── index.html

应用程序.py

#!/usr/bin/env python3


import os

import cherrypy


path   = os.path.abspath(os.path.dirname(__file__))
config = {
  'global' : {
    'server.socket_host' : '127.0.0.1',
    'server.socket_port' : 8080,
    'server.thread_pool' : 8,
  },
  '/docs' : {
    'tools.staticdir.on'    : True,
    'tools.staticdir.dir'   : os.path.join(path, 'docs'),
    'tools.staticdir.index' : 'index.html',
    'tools.gzip.on'         : True  
  }  
}


class App:

  @cherrypy.expose
  def index(self):
    return '''Some dynamic content<br/><a href="/docs">See docs</a>'''


if __name__ == '__main__':
  cherrypy.quickstart(App(), '/', config)

文档/index.html

<!DOCTYPE html>
<html>
<head>
  <title>Docs index</title>
</head>
<body>
  <p><a href='/'>Back to home page</a> (not relevant from file://)</p>
  <p><a href='a.html'>See A</a></p>
  <p><a href='b.html'>See B</a></p>
</body>
</html>

文档/a.html

<!DOCTYPE html>
<html>
<head>
  <title>A page</title>
</head>
<body>
  <p><a href='index.html'>Back to index</a></p>
  <p><a href='b.html'>See B</a></p>
</body>
</html>

文档/b.html

<!DOCTYPE html>
<html>
<head>
  <title>B page</title>
</head>
<body>
  <p><a href='index.html'>Back to index</a></p>
  <p><a href='a.html'>See A</a></p>
</body>
</html>
于 2015-06-12T11:28:07.277 回答