-1

我以为我已经弄清楚了,但是我已经阅读了一些关于此的不同内容,并且我开始变得非常困惑。

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

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 处理这些请求之前拦截这些请求,但在 url 中没有任何类型的 django.static.serve 业务时,它们似乎显示得很好。这怎么可能?我这样做对吗(我确定我不是),如何让媒体文件显示出来?为什么静态文件不显示时它们不显示?

4

1 回答 1

0

STATIC_ROOT 必须在 STATIC_URL 上为 apache 服务,这显然你做得对。

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

您可以设置一个别名,例如从 MEDIA_URL 到 MEDIA_ROOT:

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

最好避免硬编码绝对路径,但首先要确保它像这样工作。

于 2012-09-05T18:25:24.017 回答