Python 如何从我的CherryPy应用程序中提供静态文件

Python 如何从我的CherryPy应用程序中提供静态文件,python,cherrypy,Python,Cherrypy,我已经编写了一个简单的web应用程序,我一直在试图找出如何为静态文件提供服务器。我的静态文件文件夹位于另一个文件夹/usr/lib/python2.6/site packages/web3/static下面是我的代码,如何将此静态文件文件夹配置添加到我的应用程序中 #!/usr/bin/env python import sys import my_web.settings from django.core.management import execute_from_command_line

我已经编写了一个简单的web应用程序,我一直在试图找出如何为静态文件提供服务器。我的静态文件文件夹位于另一个文件夹
/usr/lib/python2.6/site packages/web3/static
下面是我的代码,如何将此静态文件文件夹配置添加到我的应用程序中

#!/usr/bin/env python
import sys
import my_web.settings

from django.core.management import execute_from_command_line
from django.core.management import call_command

import os
import tempfile
import cherrypy.wsgiserver
import django.core.handlers.wsgi


if __name__ == "__main__":

    os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_web.settings")

    # Since we use a throwaway database, it needs to be initialized
    # every time Django starts.
    if sys.argv[1] in ('runserver', 'shell'):
        with tempfile.NamedTemporaryFile() as dbFile:
            my_web.settings.DATABASES['default']['NAME'] = dbFile.name
            call_command('syncdb', interactive=False)
            server = cherrypy.wsgiserver.CherryPyWSGIServer(
                ('0.0.0.0', 8080), django.core.handlers.wsgi.WSGIHandler(),
                server_name='localhost', numthreads = 10
            )
            try:
                server.start()
            except KeyboardInterrupt:
                server.stop()

试试这个。。。并确保运行应用程序的用户具有访问静态路径的权限

cherrypy.config.update({'tools.staticdir.on': True,
                'tools.staticdir.dir': '/usr/lib/python2.6/site-packages/web3/static'
               })

希望这有帮助

Sylvain Hellegouarch发布了一个Django CherryPy集成配方,很好地解决了提供静态Django内容的问题。看

只需将这三个python文件(init.py、httplogger.py和djangoplugin.py)放到应用程序上方的目录中,并在init.py中更改保存settings.py文件的目录名,以匹配您自己的源代码树中的目录

我还从init.py中删除了两行WebSocketPlugin,因为这与我的django应用程序无关


Sylvain的博客上有一些关于配方的讨论,网址是

Ah-我有一个逗号。我已经更新了我的答案。您还需要导入cherrypy。您如何使用服务器?通过使用
python manage.py runserver
?@javiercardenas,CherryPy是一个web服务器。它是使用Django内置开发服务器a.k.a runserver的替代方案。在引用的
\uuuu init\uuuuuuuupy.py
中,通过调用
cherrypy.quickstart()