Django Admin通过apache打破了CSS链接,但是在runserver模式下运行

mgP*_*ePe 5 django django-admin django-settings

出于某种原因,django政府在某些时候被打破了.css丢失了.

这是我的设置:

MEDIA_ROOT = os.path.normpath(os.path.join(SITE_ROOT, 'media/'))
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = '/admin_media/'
Run Code Online (Sandbox Code Playgroud)

但是,管理页面上生成的行仍然是:

<link rel="stylesheet" type="text/css" href="/admin_media/css/base.css" />
Run Code Online (Sandbox Code Playgroud)

但该网站在这个文件上给了我404.

它变得更好 - 如果我使用apache来查看项目,那就会出现问题.如果我使用python manage.py runserver管理员工作得很好.

为什么会发生这种情况的任何线索? - 重启apache,没有帮助.

这是我在urls文件中的内容:

    (r'^media/(?P<path>.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}),
Run Code Online (Sandbox Code Playgroud)

mgP*_*ePe 9

好的,我明白了.

对于生产服务器,您必须设置指向您提供的设置的链接.对我来说,我在settings.py文件中选择了admin_media文件夹:

ADMIN_MEDIA_PREFIX = '/admin_media/'
Run Code Online (Sandbox Code Playgroud)

并且为了告诉apache查找文件,您必须通过添加以下行来编辑启用站点的文件:

Alias /admin_media/ /usr/lib/python2.6/dist-packages/django/contrib/admin/media/
Run Code Online (Sandbox Code Playgroud)

但请注意,这是我的服务器上安装的django contrib admin的路径.您的服务器可能有不同的安装,因此请查看您的设置.通过在终端中粘贴这个来找出你的python的安装位置:

python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
Run Code Online (Sandbox Code Playgroud)

祝大家好运!

  • 值得一提的是,在Django 1.4.2上,路径是不同的.必须指向/usr/local/lib/python2.6/dist-packages/django/contrib/admin/static/admin/ (3认同)