From 61fbda0ebf8b1ca7f6ac7d8515b1bd49690f48ab Mon Sep 17 00:00:00 2001 From: TAKAHASHI Shuuji Date: Fri, 16 Dec 2022 02:31:25 +0900 Subject: Set the correct `Content-Type` header for static WebP images (#171) --- core/views.py | 12 ++++++++++++ takahe/urls.py | 3 +-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/core/views.py b/core/views.py index 2772eb8..71db5fd 100644 --- a/core/views.py +++ b/core/views.py @@ -4,6 +4,7 @@ from django.templatetags.static import static from django.utils.decorators import method_decorator from django.utils.safestring import mark_safe from django.views.generic import TemplateView, View +from django.views.static import serve from activities.views.timelines import Home from core.decorators import cache_page @@ -89,3 +90,14 @@ class FlatPage(TemplateView): "title": self.title, "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 diff --git a/takahe/urls.py b/takahe/urls.py index d6d893f..dfdf4da 100644 --- a/takahe/urls.py +++ b/takahe/urls.py @@ -1,7 +1,6 @@ from django.conf import settings as djsettings from django.contrib import admin as djadmin from django.urls import path, re_path -from django.views.static import serve from activities.views import compose, explore, follows, posts, search, timelines from api.views import api_router, oauth @@ -219,7 +218,7 @@ urlpatterns = [ # Media files re_path( r"^media/(?P.*)$", - serve, + core.custom_static_serve, kwargs={"document_root": djsettings.MEDIA_ROOT}, ), ] -- cgit v1.2.3