在cherrypy中的静态URL

时间:2015-12-07 09:24:21

标签: python url cherrypy

我有一个基于python(cherrypy)的网站服务器,我需要一些帮助。如果这个问题太基础,我很抱歉。到目前为止,我在这方面没有丰富的经验。

我的主页位于http://host:9090/home/static/index.html。 我想重写上面的地址,并将以下地址定义为主页:http://host:9090/home/。代码本身假设保持在同一个地方。我只想要一个较短的链接,因此/home/static/index.html中也可以使用/home/

重写网址是我需要的吗?如果是这样,我发现了以下链接,但遗憾的是我不知道如何在我的代码中实现它: http://www.aminus.org/blogs/index.php/2005/10/27/url_rewriting_in_cherrypy_2_1?blog=2

 cherrypy.config.update({
                            'server.socket_port': 9090,
                            'server.socket_host': '0.0.0.0'
                           })
    conf = {
        '/': {
                'tools.sessions.on': True,
                'tools.staticdir.root': os.path.abspath(os.getcwd())
             },
        '/static': {
                'tools.staticdir.on': True,
                'tools.staticdir.dir': './static/html'
             },
        '/js': {
                'tools.staticdir.on': True,
                'tools.staticdir.dir': './static/js'
             },
        '/css': {
                'tools.staticdir.on': True,
                'tools.staticdir.dir': './static/css'
             },
        '/img': {
                'tools.staticdir.on': True,
                'tools.staticdir.dir': './static/img'
             },
        '/fonts': {
                'tools.staticdir.on': True,
                'tools.staticdir.dir': './static/fonts'
        }

    }

    class Root(object):
        def __init__(self, target):
            self.target_server = target

    webapp = Root(args.target)
    cherrypy.quickstart(webapp, '/home', conf)

任何人都可以提供帮助吗?

1 个答案:

答案 0 :(得分:3)

在我的项目中,我通常将window直接指向静态文件夹。我更喜欢在我的网址中省略'/'的所有外观,并且仅通过一个网址提供资源是一种很好的做法。无论如何,如果必须通过不同的URL提供相同的静态资源,它可能是手动编写映射的简单解决方案。

例如,文件夹结构如下所示:

'static'

将根目录的路径作为全局变量很方便,在这里我称之为repo \ __init__.py main.py static \ test \ some-module.js

SITE_ROOT

现在两个URL都会导致相同的静态资源,而不会重定向。

SITE_ROOT = '/home/user/repo'
conf = {
    '/': {
        'tools.staticdir.root': os.path.join(SITE_ROOT, 'static')
    },
    '/test': {
        'tools.staticdir.on': True,
        'tools.staticdir.dir': 'test'
    },
    '/static/test': {
        'tools.staticdir.on': True,
        'tools.staticdir.dir': 'test'
    },
}

进一步阅读:

https://cherrypy.readthedocs.org/en/3.3.0/progguide/files/static.html#forming-urls