2013-10-03 3 views
1

Я написал простое веб-приложение, и я застрял, пытаясь понять, как статические файлы сервера. Моя статическая папка с файлами находится в другой папке /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

Ah - У меня была Запятая. Я обновил свой ответ. Вам также потребуется импортировать черри. –

0

Sylvain Hellegouarch опубликовал рецепт интеграции Django CherryPy, который прекрасно решает проблему обслуживания статического содержимого Django. См https://bitbucket.org/Lawouach/cherrypy-recipes/src/c8290261eefb82cb5694930f7236606082a941ff/frameworks/django_/?at=default

Просто поместите три питона файлы (INIT .py, httplogger.py и djangoplugin.py) в каталог выше вашего приложения и изменить имя каталога держа свой settings.py файл в инициализации .py, чтобы соответствовать каталогу в вашем собственном дереве исходного кода.

Я также удалил две строки WebSocketPlugin от init .py, поскольку это не имело значения для моего приложения django.

Существует некоторая дискуссия о рецепте на блоге Сильвен по адресу http://www.defuze.org/archives/262-hosting-a-django-application-on-a-cherrypy-server.html

+0

И как вы используете сервер? с 'python manage.py runningerver'? –

+0

@ JavierCárdenas, CherryPy - это веб-сервер. Это альтернатива использованию встроенного сервера разработки Django для разработки a.k.a. В ссылочном '__init __. Py' сервер запускается в последней строке вызовом' cherrypy.quickstart() ' – nmgeek

Смежные вопросы