【问题标题】:How do I host a Django project's admin static files?如何托管 Django 项目的管理静态文件?
【发布时间】:2011-11-28 11:34:09
【问题描述】:
我听说我应该使用 Apache 在生产环境中提供静态文件。我在理解我应该如何做到这一点时遇到了一些问题。我的项目的静态URL是/static/,django.contrib.admin的静态路径是/static/admin/。这是我服务器上两个完全独立的目录,我几乎不能这样做:
Alias /static /path/to/site.com/static
Alias /static/admin /usr/local/.../django/contrib/admin/media
因为它们重叠。
我该怎么做?我真的必须将 contrib admin 静态文件夹复制到我自己的文件夹中吗?
【问题讨论】:
标签:
django
apache
django-admin
django-staticfiles
【解决方案1】:
首先,没有人说您必须从与其他人相同的基本路径提供您的管理静态文件。您可以将ADMIN_MEDIA_PREFIX 设置为您喜欢的任何值。
当然,最简单的方法就是从静态文件夹添加符号链接到 django/contrib/admin/media。
【讨论】:
-
对于那些偶然发现这个答案的人——ADMIN_MEDIA_PREFIX 在 1.4 中已被弃用。请参阅this。
【解决方案2】:
常见的解决方案是使用 /media/ 管理媒体静态文件,所以它可以在 settings.py 中
ADMIN_MEDIA_PREFIX = '/media/'
在虚拟主机配置中:
Alias /media /path/to/django/contrib/admin/media/
<Location /media>
SetHandler None
</Location>
【解决方案3】:
您可以颠倒Alias 条目的顺序,Apache 将按预期对其进行解析:
Alias /static/admin /usr/local/.../django/contrib/admin/media
Alias /static /path/to/site.com/static
这是因为当 Apache 加载其配置时,它从自上而下的角度存储条目。所以它首先尝试匹配/static/admin,然后如果URI不匹配,它会尝试匹配/static。