gpt4 book ai didi

django - Django 中 "load static from staticfiles"和 "django.core.context_processors.static"之间的区别

转载 作者:行者123 更新时间:2023-12-04 00:44:37 25 4
gpt4 key购买 nike

当我学习 Django 如何处理静态文件时,我看到了两种不同的方式来提供静态文件,同时仍然允许可移植性。

  • 一种方法是在模板中执行以下操作:
    {% load static from staticfiles %}
    <img src="{% static "images/hi.jpg" %}" alt="Hi!" />

    如文档所示 here在 Django 文档上。
  • 我看到的另一种方法是为静态文件加载上下文处理器,然后使用
    <img src="{{ STATIC_URL }}images/hi.jpg" alt="Hi!" />

    如前所述 here在 Django 文档上。用这个方法的时候我改了STATIC_URL基于
    if DEBUG:
    STATIC_URL = 'localhost'
    else:
    STATIC_URL = 'some_static_server_url'

  • 哪个被认为是更好的做法?一种方法比另一种更好吗?例如, this SO 问题有两种方法作为答案,和 this one有第二种方法。任何见解都会有所帮助。

    最佳答案

    当使用 Django 的默认 StaticFilesStorage 时,这两种方法本质上是相同的。 .这两种方法都不知道任何实际文件。这两种方法都只是将 STATIC_URL 连接在一起设置和实际文件路径。

    使用自定义文件存储后端时可能会有所不同。如果您需要灵活性,例如如果某些文件使用不同的静态 url 存储,您可以覆盖后端的 url方法根据文件的实际位置返回一个 url。使用 STATIC_URL 是不可能的环境。但是,这种情况非常罕见:大多数服务器将它们的静态文件存储在同一服务器上或第三方服务上的单个位置。

    当您定义 STATIC_URL设置和静态文件与网站在同一个域中,最好将其定义为相对于根的 url,例如'/static/' .这增加了可移植性并且不太可能导致错误。如果您已经涵盖了可以部署代码的所有系统,您将不再需要担心。

    关于django - Django 中 "load static from staticfiles"和 "django.core.context_processors.static"之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23458391/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com