【问题标题】:Override specific admin css files in Django覆盖 Django 中的特定管理 css 文件
【发布时间】:2011-12-10 19:23:51
【问题描述】:

覆盖管理模板就像在模板目录中创建一个文件夹admin 并将您想要覆盖的任何模板文件复制到其中一样简单。然而,我只是想使用管理样式表,所以我在我的静态文件文件夹中创建了一个文件夹 admin 并将 css/base.css 放入其中。与模板解决方案不同,这似乎不起作用。

那么有没有办法像覆盖模板一样覆盖 django.contrib.admin 的单个 css 文件?如果不是,覆盖css文件的最佳解决方案是什么?我正在寻找一种解决方案,而不是将所有管理媒体文件复制到我的项目中并更改管理员的静态目录

【问题讨论】:

  • 您要覆盖管理员中所有页面的 CSS 还是仅覆盖特定更改列表或模型?

标签: python css django django-admin


【解决方案1】:

我正在做的是像这样覆盖base_site.html 模板:

{% block blockbots %}
<link rel="stylesheet" type="text/css" href="/media/css/my_admin.css" />
{{ block.super }}
{% endblock %}

我将 CSS 放入 blockbots 而不是 extrahead 以确保在最后加载,因此它将覆盖所有其他 CSS。

【讨论】:

  • 在最新版本的 django 中,您可以使用 extrastyle 块代替。
【解决方案2】:

我正在寻找一种解决方案,无需将所有管理员媒体文件复制到我的项目中并更改管理员的静态目录

我不认为真的有其他选择。您将媒体文件复制到一个新目录中,并在启动服务器时传递adminmedia 命令行参数,例如

python manage.py runserver --adminmedia=./myadminmedia

无论如何,当您在生产服务器上运行它时,管理媒体必须由一个好的静态服务服务器提供服务,您可以为此指明这条新路径。

来自文档的参考:https://docs.djangoproject.com/en/1.3/ref/django-admin/#django-admin-option---adminmedia

【讨论】:

  • 还有/usr/local/lib/python2.6/dist-packages/django/bin/django-admin.py: error: no such option: --adminmedia
  • 好的,所以--aminmedia 的交易根本没有,但我最终还是只配置了 Apache 进行开发,这使得这个答案最接近。
  • 这里是 --adminmedia 的参考:docs.djangoproject.com/en/dev/ref/django-admin/…
【解决方案3】:

也许您可以破解您的 urls.py 文件并仅指向一个从本地文件夹提供的媒体 URL,而其他的则从 Django 目录提供(在开发模式下)。

【讨论】:

    猜你喜欢
    • 2011-11-13
    • 2011-08-06
    • 2011-11-15
    • 2016-03-12
    • 2016-09-04
    • 2012-03-02
    • 2013-01-23
    • 2018-10-02
    • 1970-01-01
    相关资源
    最近更新 更多