【问题标题】:Static files not found in MezzanineMezzanine 中找不到静态文件
【发布时间】:2017-01-07 08:40:29
【问题描述】:

我正在尝试在我的 Mezzanine 网站上安装一个新模板。我的夹层在 4.2.2 版本和 Django 在 1.9.7 。这是我所做的:

DEBUG = true

我创建了一个名为“template_app”的新应用程序并在settings.py中加载:

INSTALLED_APPS = (
    "template_app",
    ...
)

我创建了目录结构,并复制了默认夹层文件(基础、索引...),例如:

template_app
    static
        css
        img
        js
    templates
        base.html
        index.html
        includes
            footer_scripts.html

我下载了一个引导模板,并将上面的 css js img 文件夹和 index.html 替换为模板中的内容。 (我使用的模板:https://startbootstrap.com/template-overviews/business-casual/)然后在base.html中链接css和javascript:

(所有 css)

{% compress css %}
<link rel="stylesheet" href="{% static "css/bootstrap.css" %}">
<link rel="stylesheet" href="{% static "css/bootstrap.min.css" %}">
<link rel="stylesheet" href="{% static "css/business-casual.css" %}">
<link rel="stylesheet" href="{% static "css/mezzanine.css" %}">
<link rel="stylesheet" href="{% static "css/bootstrap-theme.css" %}">

(所有js)

{% compress js %}
<script src="{% static "mezzanine/js/"|add:settings.JQUERY_FILENAME %}"></script>
<script src="{% static "js/bootstrap.js" %}"></script>
<script src="{% static "js/bootstrap.min.js" %}"></script>
<script src="{% static "js/jquery.js" %}"></script>
<script src="{% static "js/bootstrap-extras.js" %}"></script>

我不确定我在哪里做错了,或者我错过了什么。我的网站在应用中找不到 css 和 javascript 文件:

Not Found: /css/bootstrap.min.css/
Not Found: /css/business-casual.css/
[07/Jan/2017 08:12:30] "GET /css/bootstrap.min.css/ HTTP/1.1" 404 1716
[07/Jan/2017 08:12:30] "GET /css/business-casual.css/ HTTP/1.1" 404 1720
Not Found: /js/jquery.js/
...

我尝试根据其他解决方案修改 urls.py 和 setting.py 的其他部分,但它们似乎不起作用。我做错了什么?

-- 2017-01-09 添加--

检查 findstatic 将我链接到正确的路径。除了 bootstrap.css 将我下载的模板中的 css 文件和夹层模板链接到我。

【问题讨论】:

  • 显示您的 STATIC_ROOT 和 STATIC_URL。
  • @DmitriiMikhailov 在调试模式下,我认为 STATIC_ROOT 无关紧要。
  • @RyneEverett 是的,没错,默认情况下它应该查看静态文件夹。然后我建议检查 urlpatterns 以提供静态文件docs.djangoproject.com/en/1.10/howto/static-files/…
  • @DmitriiMikhailov my STATIC_URL = '/static/' 将静态文件添加到 url 对我不起作用
  • @EricYeh 我认为您的 bootstrap.css 文件的 url 应该包含“/static/”。

标签: django mezzanine static-files


【解决方案1】:

我对静态文件也有同样的问题,但它确实需要我设置“STATIC_ROOT”设置,因为我的路径偏离了方向。

由于我使用的是自定义主题,我不得不更改 settings.py 中的“STATIC_ROOT”路径以指向我的应用静态文件,而不是指向默认的 PROJECT_ROOT。

所以我添加了这样的东西......

## Custom Theme Path (For Static Files)
THEME_URL = "template_app/"

并将“STATIC_ROOT”更改为...

STATIC_URL = "/static/"
STATIC_ROOT = os.path.join(PROJECT_ROOT, THEME_URL, STATIC_URL.strip("/"))

【讨论】:

    【解决方案2】:

    确保再次重新启动测试服务器(如果需要,手动重新启动),自动重新启动不会识别对 static/ 目录的更改。

    【讨论】:

      【解决方案3】:

      我在为同一问题寻找解决方案时在 Google 上发现了这个问题。我设法解决了这些步骤:

      • 首先,仔细检查template_app 是否列在INSTALLED_APPS 上,高于所有夹层应用程序;
      • 重新运行 findstatic;
      • 如果仍然找不到,请运行 collectstatic。虽然 findstatic 找不到我想要的主题(但会找到其他主题),但 collectstatic 设法找到它并链接它的静态文件。

      【讨论】:

        猜你喜欢
        • 2019-02-12
        • 2017-05-31
        • 1970-01-01
        • 2021-08-27
        • 2014-11-10
        • 2011-08-26
        • 2020-06-22
        • 2021-06-20
        • 2021-08-16
        相关资源
        最近更新 更多