【问题标题】:Adding a static file directory to override CSS in Django添加静态文件目录以覆盖 Django 中的 CSS
【发布时间】:2012-04-12 03:00:20
【问题描述】:

我试图弄清楚为什么我不能在 Django 中覆盖 base.css

settings.py 我有:

STATIC_URL = "/site_media/static/"

site_base.html:

<link rel="stylesheet" href="{{ STATIC_URL }}pinax/css/base.css" />

我已经自定义了位于/site_media/static/pinax/css/base.css 的文件。但不是从这里读取文件,而是从我的python/site-packages/pinax 目录中读取它。在同一个 site_base.html 文件中,我可以覆盖 /site_media_static/pinax/images/ 文件夹中的图像,这似乎很奇怪,我可以覆盖图像但不能覆盖 CSS 文件。

知道我做错了什么吗?

【问题讨论】:

    标签: css django static pinax


    【解决方案1】:

    STATIC_URL 是提供静态文件的 URL,而不是存储它们的目录。

    您需要将包含静态文件的目录添加到STATICFILES_DIRS 或将您的静态文件放在应用程序的static 子目录中。

    请参阅Django staticfiles app 的文档。

    【讨论】:

    • 我正在使用collectstatic 并且想知道为什么它没有为 django 管理员收集我覆盖的 base.css。 staticfiles app docs 状态:“将使用首先在指定位置之一找到的文件”。所以我将'mysite' 设置中的INSTALLED_APPS 移动到了第一个位置。它现在复制 mysite/static/admin/css/base.css 而不是 python/site-packages/django/contrib/admin/css/base.css
    【解决方案2】:

    STATIC_ROOT(由STATIC_URL 引用)不应手动修改,它由来自应用程序静态目录的collectstatic 命令和STATICFILES_DIRS 填充。在 Django 的开发服务器中,还有一个 helper 允许直接从源代码访问静态文件,从而可以更轻松地调试 JS 和 CSS。

    在您的情况下,您可以尝试将更新的文件放在STATICFILES_DIRS 中的某个位置。另外,请查看STATICFILES_FINDERS,它可以更改静态文件查找器的顺序以设置哪个优先级。

    【讨论】:

      猜你喜欢
      • 2019-09-12
      • 2015-02-05
      • 2014-06-06
      • 2013-01-10
      • 2015-08-28
      • 2012-10-02
      • 2020-08-31
      • 1970-01-01
      • 2015-09-11
      相关资源
      最近更新 更多