Загрузить статическое содержимое с помощью CherryPy
Я перепробовал много вещей, и я гуглил в течение нескольких часов, но я не мог решить свою проблему.
Конфигурационный Файл:
[/]
tools.staticdir.root = "/Users/phil/Dropbox/Projects/AppName"
[/main.css]
tools.staticfile.on = True
tools.staticfile.filename = "/Users/phil/Dropbox/Projects/AppName/css/main.css"
[/images]
tools.staticdir.on = True
tools.staticdir.dir = "images"
Вишневый Код:
import cherrypy, os
class AppName(object):
def index(self):
return "<img src='images/logo.jpeg'>"
index.exposed = True
cherrypy.config.update('/Users/phil/Dropbox/Projects/AppName/conf/AppName.config')
cherrypy.quickstart(AppName())
Моя проблема в том, что он не работает, я пробовал все с комбинированием путей и так далее, но изображение и css не загружаются, когда я делаю sth, как return '"
Вот ошибка, которую я получаю при загрузке моего приложения:
127.0.0.1 - - [24/May/2012:22:28:47] "GET /images/logo.jpeg HTTP/1.1" 404 1268 "http://localhost:8080/" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_4) AppleWebKit/536.5 (KHTML, like Gecko) Chrome/19.0.1084.46 Safari/536.5"
4 ответа:
Не уверен, в чем была проблема, но это работает:
[/] tools.staticdir.root = "/Users/phil/Dropbox/Projects/AppName" [/images] tools.staticdir.on = True tools.staticdir.dir = "images"
Начните приложение с:
cherrypy.quickstart(AppName(), '/', 'AppName.config')
Вишневый Код:
def index(self): return "<img src='/images/logo.jpeg'>" index.exposed = True
Я думаю, что / перед изображениями также важно. Спасибо всем
Взгляните на раздел обслуживание статического содержимого руководства Cherrypy и посмотрите, может ли это вам помочь.
В качестве альтернативы, вот то, что я использовал для доставки статического контента раньше - словарь внутри
main()
.conf = { '/': {'tools.staticdir.root': os.path.dirname(os.path.abspath(__file__))}, '/css': { 'tools.staticfile.on': True, 'tools.staticfile.filename': os.path.join(os.path.dirname(os.path.abspath(__file__)), 'css/') } } cherrypy.quickstart(AppName(), config=conf)
Добавьте это в свой конфигурационный файл:
[/] tools.staticdir.debug: True log.screen: True
Вы должны немедленно быть в состоянии сузить проблему.
Я потратил некоторое время, чтобы заставить это работать на Windows, поэтому я надеюсь, что будет полезно поделиться тем, что (в настоящее время) работает. Я использую
cherrypy.quickstart(website(), '/', "server.conf")
для запуска сервера.Я обнаружил, что мне пришлось указать подпапку в
js
вручную.## Server Configuration [global] server.socket_port = 3030 #engine.autoreload.on = False #Might as well turn off when working on HTML log.error_file = "H:\\My Documents BACKED UP\GitProjects\website\logfile" [/] tools.staticdir.debug = True log.screen = True tools.sessions.on = True [/js] tools.staticdir.on = True tools.staticdir.dir = "H:\\My Documents BACKED UP\GitProjects\website\js" [/js/vendor] tools.staticdir.on = True tools.staticdir.dir = "H:\\My Documents BACKED UP\GitProjects\website\js\\vendor" [/img] tools.staticdir.on = True tools.staticdir.dir = "H:\\My Documents BACKED UP\GitProjects\website\img" [/css] tools.staticdir.on = True tools.staticdir.dir = "H:\\My Documents BACKED UP\GitProjects\website\css"