Django提供静态文件,例如favicon.ico没有`{% load static %}`

pgky5nke  于 2023-10-21  发布在  Go
关注(0)|答案(1)|浏览(104)

我已经成功地遵循了Django中流行的静态文件服务解决方案:

  • 我有/myproject/myapp/static/favicon.ico
  • 我在html模板中使用<link rel="icon" href="{%static 'favicon.ico' %}" />

但是如果我从html中省略了<link rel...>,那么浏览器将默认尝试获取/favicon.ico,这是可以预见的

Not Found: /favicon.ico

我如何告诉Django“如果urlpatterns中的任何内容与GET字符串不匹配,而该GET字符串与某个目录中的文件匹配,则只提供该文件”?
(Then我可以写例如。<script src="/script.js">,并在模板中不使用{% use static %}的情况下提供/myproject/myapp/static-or-wherever/script.js--例如,如果我手动浏览到http://my-site.com/script.js。)

d7v8vwbk

d7v8vwbk1#

添加一个catch-all URL模式,它匹配之前没有匹配的任何内容,并尝试提供静态文件目录中的内容。
沿着这些路线可以做的事情:

# urls.py
from django.conf import settings
from django.views.static import serve
from django.urls import re_path

urlpatterns = [
    re_path(r'^(?P<path>.*)$', serve, {
        'document_root': settings.STATIC_ROOT,
        'show_indexes': False # to avoid listing directories
    }),
    # ...
    # your other patterns
]

相关问题