【问题标题】: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

      【讨论】:

        猜你喜欢
        • 2011-08-06
        • 2015-08-16
        • 1970-01-01
        • 1970-01-01
        • 2019-11-23
        • 1970-01-01
        • 1970-01-01
        • 2012-02-03
        • 1970-01-01
        相关资源
        最近更新 更多