Django Admin 通过 apache 破坏了 CSS 链接,但在 runserver 模式下工作
Posted
技术标签:
【中文标题】Django Admin 通过 apache 破坏了 CSS 链接,但在 runserver 模式下工作【英文标题】:Django Admin has broken CSS link through apache, but works in runserver mode 【发布时间】:2011-05-22 08:07:18 【问题描述】:出于某种原因,django 管理系统在某些时候崩溃了。缺少 css。
这是我的设置:
MEDIA_ROOT = os.path.normpath(os.path.join(SITE_ROOT, 'media/'))
MEDIA_URL = '/media/'
ADMIN_MEDIA_PREFIX = '/admin_media/'
但是,管理页面上生成的行仍然是:
<link rel="stylesheet" type="text/css" href="/admin_media/css/base.css" />
但是网站在这个文件上给了我 404。
而且它变得更好 - 如果我使用 apache 查看项目,就会出现这个问题。如果我使用python manage.py runserver
,管理员工作得很好。
关于为什么会发生这种情况的任何线索? - 重新启动 apache,但没有帮助。
这是我在 urls 文件中的内容:
(r'^media/(?P<path>.*)$', 'django.views.static.serve', 'document_root': settings.MEDIA_ROOT),
【问题讨论】:
您是通过 Django 提供静态媒体文件还是通过 Apache 提供静态媒体文件?如果是后者,您可能想展示如何在 Apache 配置下设置这些文件。 如果你告诉我如何理解答案,我会想办法告诉你 【参考方案1】:好的,我想通了。
对于生产服务器,您必须设置指向您提供的设置的链接。对我来说,我在 settings.py 文件中选择了 admin_media 文件夹:
ADMIN_MEDIA_PREFIX = '/admin_media/'
为了告诉 apache 查找文件,您必须通过添加以下行来编辑启用站点的文件:
Alias /admin_media/ /usr/lib/python2.6/dist-packages/django/contrib/admin/media/
请注意,这是安装在我的服务器上的 django contrib admin 的路径。您的服务器可能有不同的安装,因此请查看您的设置。通过在终端中复制粘贴来找出你的 python 的安装位置:
python -c "from distutils.sysconfig import get_python_lib; print get_python_lib()"
祝大家好运!
【讨论】:
谢谢,这是一篇非常有用的帖子。我创建了一个从 ADMIN_MEDIA_PREFIX 到 [Python]/dist-packages/django/contrib/admin/media/ 的符号链接,这也有效,无需编辑 Apache 虚拟主机文件。 写得好。修复了我遇到的完全相同的问题。 值得一提的是,在 Django 1.4.2 上,路径是不同的。必须指向/usr/local/lib/python2.6/dist-packages/django/contrib/admin/static/admin/ 我的 Fedora 17 系统中 Django 1.4.3 的路径:/usr/lib/python2.7/site-packages/django/contrib/admin/static/admin/以上是关于Django Admin 通过 apache 破坏了 CSS 链接,但在 runserver 模式下工作的主要内容,如果未能解决你的问题,请参考以下文章
django-debug-toolbar在获取sql统计信息时破坏管理员
django-admin 和django-admin.py的区别