如何托管Django项目的管理静态文件?
问题描述:
我听说我应该使用Apache在生产环境中提供静态文件。我有一些问题,理解我应该怎么做,但。我的项目的静态URL是/static/
,而django.contrib.admin
的静态路径是/static/admin/
。这些都是我的服务器上有两个完全独立的目录,我也很难做到这一点:如何托管Django项目的管理静态文件?
Alias /static /path/to/site.com/static
Alias /static/admin /usr/local/.../django/contrib/admin/media
由于它们重叠。
我该怎么做?我真的必须将contrib admin静态文件夹复制到我自己的文件夹中吗?
答
首先,没有人说你必须从为别人相同的基本路径为你的管理员静态文件。你可以设置ADMIN_MEDIA_PREFIX
为任何你喜欢的。
然而,最简单的事情就是添加从静态文件夹到django/contrib/admin/media的符号链接。
答
常用的解决方法是使用/媒体/对admin媒体静态文件,因此它可能是在settings.py
ADMIN_MEDIA_PREFIX = '/media/'
和虚拟主机配置:
Alias /media /path/to/django/contrib/admin/media/
<Location /media>
SetHandler None
</Location>
答
可以颠倒顺序在Alias
条目和Apache将解析它像预期一样:
Alias /static/admin /usr/local/.../django/contrib/admin/media
Alias /static /path/to/site.com/static
这是因为... e当Apache加载它的配置时,它从上到下存储条目。所以它首先尝试匹配/static/admin
,然后如果URI不匹配,则它会尝试匹配/static
。
对于绊倒这个答案的人们,'ADMIN_MEDIA_PREFIX'已经在1.4中弃用了。请参阅[this](http://stackoverflow.com/a/9960831/1226722)。 – gregoltsov