2013-10-03 35 views
1

我已经写了一个简单的Web应用程序,我陷入了困境,试图找出如何服务器静态文件。我的静态文件文件夹位于不同的文件夹中/usr/lib/python2.6/site-packages/web3/static下面是我的代码,我如何将此静态文件文件夹配置添加到我的应用程序。如何从我的CherryPy应用程序提供静态文件

#!/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() 

回答

0

尝试此操作...并确保运行该应用程序的用户具有访问静态路径的权限。

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

希望这有助于!

+0

关于维尔托德的博客食谱一些讨论,这没有工作 – Santhosh

+0

啊 - 我有一个结尾逗号。我已经更新了我的答案。你还需要导入cherrypy。 –

0

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

刚落,三个Python文件(初始化的.py,httplogger.py和djangoplugin.py)到您的应用程序上面的目录并更改目录的名称牵着你的settings.py文件中的init .py以匹配您自己的源代码树中的目录。

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

有一个在http://www.defuze.org/archives/262-hosting-a-django-application-on-a-cherrypy-server.html

+0

你如何使用服务器?用'python manage.py runserver'? –

+0

@JavierCárdenas,CherryPy是一个Web服务器。这是使用Django内置开发服务器a.k.a runserver的替代方案。在引用的'__init __。py'中,服务器通过调用'cherrypy.quickstart()'在最后一行启动。 – nmgeek

相关问题