在Django中的Web服务器上提供静态文件

时间:2011-05-09 19:34:30

标签: django apache configuration mod-python

我很难在外部服务器(AWS)上设置我的网站。除静态文件(css和图像)外,一切似乎都在工作。

我的项目设置如此 -

/var/www/
     djangoapps
         myproject
             settings.py, apps, etc.    
     djangotemplates
         myproject
             HTML files
/var/www/html
     media
         static    
             Images & CSS files

在httpd conf文件中我有 -

<Location /mysite>
        SetHandler python-program
        PythonHandler django.core.handlers.modpython
        SetEnv DJANGO_SETTINGS_MODULE mysite.settings
        SetEnv PYTHON_EGG_CACHE "/var/cache/www/pythoneggs"
        PythonDebug Off
        PythonPath "['/var/www/djangoapps'] + sys.path"
</Location>

<Location "/media/">
       SetHandler None
</Location>

在settings.py -

STATIC_URL = '/myproject/static/'
STATICFILES_DIRS = ('/var/www/html/media/static/',)

当我加载页面时,模板正常工作,图像文件的URL是“正确的”(例如background: url("/myproject/static/email.jpg")。但是,图片没有加载。你能告诉我我需要什么吗?改变,以便图像和CSS正确加载?谢谢

2 个答案:

答案 0 :(得分:2)

你见过official docs on serving static media with mod_python吗?我怀疑你需要为你的媒体文件做的静态文件使用类似的SetHandler。

此外,不推荐使用mod_python。

答案 1 :(得分:1)

您需要为要提供的静态文件添加别名。类似的东西:

Alias /myproject/static/ /var/www/djangoapps/myproject/media/static

这样Apache就会提供静态文件而不是让django来处理它。