Я не уверен, является ли это лучшим способом сделать это или нет, но я наконец достиг своей цели, создав подкласс AdminSite
и переопределив метод admin_view
:
class HTMLAdminSite(admin.AdminSite):
'''Django AdminSite that forces response content-types to be text/html
This class overrides the default Django AdminSite `admin_view` method. It
decorates the view function passed and sets the "Content-Type" header of
the response to 'text/html; charset=utf-8'.
'''
def _force_html(self, view):
def force_html(*arguments, **keywords):
response = view(*arguments, **keywords)
response['Content-Type'] = 'text/html; charset=utf-8'
return response
return force_html
def admin_view(self, view, *arguments, **keywords):
return super(HTMLAdminSite, self).admin_view(self._force_html(view),
*arguments, **keywords)
Затем,в моем корневом URLconf перед вызовом admin.autodiscover()
я установил admin.site
для экземпляра этого класса HTMLAdminSite
.Кажется, все работает хорошо, но если есть лучший способ, я буду рад это услышать.