Set the correct Content-Type header for static WebP images (#171)

This commit is contained in:
TAKAHASHI Shuuji 2022-12-16 02:31:25 +09:00 committed by GitHub
parent 2131b40ce0
commit 61fbda0ebf
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 13 additions and 2 deletions

View File

@ -4,6 +4,7 @@ from django.templatetags.static import static
from django.utils.decorators import method_decorator from django.utils.decorators import method_decorator
from django.utils.safestring import mark_safe from django.utils.safestring import mark_safe
from django.views.generic import TemplateView, View from django.views.generic import TemplateView, View
from django.views.static import serve
from activities.views.timelines import Home from activities.views.timelines import Home
from core.decorators import cache_page from core.decorators import cache_page
@ -89,3 +90,14 @@ class FlatPage(TemplateView):
"title": self.title, "title": self.title,
"content": mark_safe(html), "content": mark_safe(html),
} }
def custom_static_serve(*args, **keywords):
"""
Set the correct `Content-Type` header for static WebP images
since Django cannot guess the MIME type of WebP images.
"""
response = serve(*args, **keywords)
if keywords["path"].endswith(".webp"):
response.headers["Content-Type"] = "image/webp"
return response

View File

@ -1,7 +1,6 @@
from django.conf import settings as djsettings from django.conf import settings as djsettings
from django.contrib import admin as djadmin from django.contrib import admin as djadmin
from django.urls import path, re_path from django.urls import path, re_path
from django.views.static import serve
from activities.views import compose, explore, follows, posts, search, timelines from activities.views import compose, explore, follows, posts, search, timelines
from api.views import api_router, oauth from api.views import api_router, oauth
@ -219,7 +218,7 @@ urlpatterns = [
# Media files # Media files
re_path( re_path(
r"^media/(?P<path>.*)$", r"^media/(?P<path>.*)$",
serve, core.custom_static_serve,
kwargs={"document_root": djsettings.MEDIA_ROOT}, kwargs={"document_root": djsettings.MEDIA_ROOT},
), ),
] ]