1

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

2 回答 2

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)拖放到应用程序上方的目录中,然后在init .py 中更改保存 settings.py 文件的目录名称以匹配您自己的目录源代码树。

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

在 Sylvain 的博客上有一些关于配方的讨论,网址为http://www.defuze.org/archives/262-hosting-a-django-application-on-a-cherrypy-server.html

于 2015-04-02T14:10:30.953 回答
0

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

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

希望这可以帮助!

于 2013-10-03T19:50:31.617 回答