如何提供static / admin /而不仅仅是static / css?

时间:2012-11-16 14:38:02

标签: django django-admin

执行python manage.py collectstatic后,我发现我可以访问static/css中的所有内容,但不能访问static/admin中的所有内容。要非常清楚:

  1. 我转到:http://mysite.com/static/admin/css/login.css并失败
  2. 将文件夹static/admin手动移至static/css
  3. 我去:http://mysite.com/static/css/admin/css/login.css并且有效!
  4. 注意URLS中从 / static / admin / css / / static / css / admin / css / 的更改。这意味着这不能解决问题,因为模板继续指向第一个URL。

    我知道,提供静态管理文件已经在stackoverflow中被问过100次,但我仍然无法使其工作(我并不是唯一一个我读过的评论)。似乎没有人提到访问static/css文件夹和static/anyother_folder的奇怪问题。

    一些额外的细节:

    collectstatic没有错误,应用程序css没有问题。这就是我在settings.py)中的内容:

    MEDIA_ROOT = join(PROJECT_ROOT,'../media')
    MEDIA_URL = '/media/'
    STATIC_ROOT = join(PROJECT_ROOT,'../static')
    STATIC_URL = '/static/'
    

    我也尝试了已弃用的 ADMIN_MEDIA_PREFIX而没有任何结果。

    ADMIN_MEDIA_PREFIX = '/static/admin/'
    

    我的nginx配置简单明了。

    location /static {
        alias /home/the_home/where_the_static_is/static/;
    }
    location /media {
        alias /home/the_home/where_the_media_is/media/;
    }
    

    我使用的是最新版本的Django(1.4.2)。

1 个答案:

答案 0 :(得分:1)

粉扑。所以,在这里。我在nginx中有另一个文件夹,将/ static / admin /重定向到虚拟环境中的Django安装。在组织中,我们使用预先配置Django项目的虚拟机模板。所以,重新访问nginx配置我发现了这个:

location /static/admin {
   alias /path/to/virtualenvs/my_virtualenv/path_to_the_static_admin;
}

显然这适用于Django 1.3,但路径在某些时候发生了变化。