2015-12-07 2 views
9

У меня есть сервер сайта на основе python (cherrypy), и мне нужна помощь. Прошу прощения, если этот вопрос слишком прост. До сих пор у меня нет большого опыта в этой области.Статический URL-адрес в cherrypy

Моя основная страница находится на http://host:9090/home/static/index.html. Я хочу переписать адрес, указанный выше, и определить следующий адрес в качестве главной страницы: http://host:9090/home/. Сам код предполагает остаться в одном месте. Я просто хочу короткую ссылку, поэтому /home/static/index.html будет доступен также в /home/.

Переписан URL-адрес, что мне нужно? Если это так, я нашел следующую ссылку, но, к сожалению, я не знаю, как реализовать это в моем коде: 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) 

Любой человек может помочь?

+0

@qarma Как уже говорилось выше, мне нужно переписать URL. – Omri

ответ

2

В моих проектах я обычно указываю '/' непосредственно в статическую папку. Я предпочитаю пропускать все видимости 'static' в своих URL-адресах, а imho - хорошая практика для обслуживания ресурса только через один URL. Во всяком случае, это может быть простое решение для ручной записи сопоставления, если один и тот же статический ресурс должен обслуживаться через разные URL-адреса.

Например, структура папок выглядит следующим образом:

repo \ 
    __init__.py 
    main.py 
    static \ 
     test \ 
      some-module.js 

Это удобно иметь путь к корневой директории как глобальные переменные, здесь я называю это SITE_ROOT.

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' 
    }, 
} 

Теперь оба URL-адреса приводят к одному и тому же статическому ресурсу без перенаправления.

http://127.0.0.1:8080/test/some-module.js 
http://127.0.0.1:8080/static/test/some-module.js 

Дальнейшее чтение:

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

 Смежные вопросы

  • Нет связанных вопросов^_^