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

时间:2013-10-03 19:06:17

标签: python cherrypy

我写了一个简单的网络应用程序,我试图弄清楚如何服务器静态文件。我的静态文件文件夹位于不同的文件夹/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()

2 个答案:

答案 0 :(得分:0)

试试这个......并确保运行该应用的用户有权访问静态路径。

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

希望这有帮助!

答案 1 :(得分:0)

Sylvain Hellegouarch发布了一个Django CherryPy集成配方,很好地解决了提供静态Django内容的问题。见https://bitbucket.org/Lawouach/cherrypy-recipes/src/c8290261eefb82cb5694930f7236606082a941ff/frameworks/django_/?at=default

只需将三个python文件( init .py,httplogger.py和djangoplugin.py)放入应用程序上方的目录中,然后更改包含settings.py文件的目录的名称 init .py以匹配您自己的源代码树中的目录。

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

关于Sylvain博客http://www.defuze.org/archives/262-hosting-a-django-application-on-a-cherrypy-server.html

的食谱有一些讨论