Ant*_* F. 5 django static-files django-staticfiles
当我了解Django如何处理静态文件时,我已经看到了两种不同的方式来提供静态文件,同时仍然允许移植性.
一种方法是在模板中执行以下操作:
{% load static from staticfiles %}
<img src="{% static "images/hi.jpg" %}" alt="Hi!" />
Run Code Online (Sandbox Code Playgroud)
作为记录在这里的Django文档.
我看到的另一种方法是为静态文件加载上下文处理器,然后使用
<img src="{{ STATIC_URL }}images/hi.jpg" alt="Hi!" />
Run Code Online (Sandbox Code Playgroud)
作为注意到这里的Django文档.使用此方法时,我改变STATIC_URL基于
if DEBUG:
STATIC_URL = 'localhost'
else:
STATIC_URL = 'some_static_server_url'
Run Code Online (Sandbox Code Playgroud)这被认为是更好的做法?有一种方式比另一种更好吗?例如,这个 SO问题有两种方法作为答案,而这个方法有第二种方法.任何见解都会有所帮助.
当使用 Django 的默认StaticFilesStorage. 这两种方法都不知道任何实际文件。这两种方法都只是将STATIC_URL设置和实际文件路径连接在一起。
使用自定义文件存储后端时可能会有所不同。如果您需要灵活性,例如,如果某些文件使用不同的静态 url 存储,您可以覆盖后端的url方法以根据文件的实际位置返回一个 url。使用该STATIC_URL设置是不可能的。但是,这种情况非常罕见:大多数服务器将它们的静态文件存储在同一服务器上或第三方服务上的单个位置。
当您定义STATIC_URL设置并且静态文件与网站位于同一域中时,最好将其定义为相对于根的 url,例如'/static/'. 这增加了可移植性并且不太可能导致错误。如果您已经涵盖了可以部署代码的所有系统,您将不再需要担心。