使用Django和fcgi提供静态文件的困惑

时间:2012-09-05 18:22:02

标签: django apache fastcgi shared-hosting

我以为我弄清楚了这一点,但我已经阅读了一些不同的事情,我开始变得非常困惑。

我的settings.py中的网址设置如下所示:

MEDIA_ROOT = HOME + '/uploads'

MEDIA_URL = PUBLIC_HTML + 'media/'

STATIC_ROOT = HOME + '/static'

STATIC_URL = PUBLIC_HTML + 'static/'

ADMIN_MEDIA_PREFIX = PUBLIC_HTML + 'static/admin/'

HOME / home / username /和PUBLIC_HTML的位置如“http://www.mydomain.com/test/myproject/”

我似乎正在获取静态文件,但我的媒体文件没有显示出来。我的urls.py文件中没有设置任何内容,而且我正在使用共享主机,所以我所能做的就是使用.htaccess文件来执行apache指令。

显然,我想让我的媒体文件出现,但我的第一个问题是为什么静态文件出现了?这没有意义。我认为apache必须在Django处理它们之前拦截这些请求,但它们似乎在网址中没有任何django.static.serve业务时显示正常。怎么可能?我这样做是对的(我确定我不是),我怎样才能显示媒体文件?当静态文件不存在时,它们为什么不显示?

1 个答案:

答案 0 :(得分:0)

STATIC_ROOT必须在STATIC_URL上提供apache,你显然已经做得很好。

以同样的方式,MEDIA_URL必须由apache为MEDIA_ROL提供服务。

您可以设置alias,例如从MEDIA_URL到MEDIA_ROOT:

Alias /test/myproject/media/ /home/username/media/

最好避免硬编码绝对路径,但首先要确保它的工作原理如下。