Как установить charset заголовка в Django 1.11
Мы используем Django1.11 и у нас возникли проблемы, потому что наш заголовок Content-Type
не содержит части charset
, установленной в UTF-8. Что-то вроде этого:
Content-Type: application/json; charset=UTF-8
Я хочу исправить это для всех конечных точек, поэтому я подумал о том, чтобы включить промежуточную программу, которая будет запускаться после запуска всех промежуточных программ. Проблема в том, что я не знаю, возможно ли это. Есть идеи? Или альтернативные решения?
Вы можете написать пользовательское промежуточное ПО следующим образом:
from django.utils.deprecation import MiddlewareMixin
class AllIsJsonMiddleware(MiddlewareMixin):
def process_response(self, request, response):
response['Content-Type'] = 'application/json; charset=UTF-8'
return response
Но я не рекомендую этого делать. Это преобразует все ответы в JSON. Лучше всего использовать фреймворк, например https://www.django-rest-framework.org/.
Однако, можно использовать стандартный ответ вида...
return HttpResponse(data, content_type='application/json; charset=UTF-8')
... или пользовательский декоратор:
from functools import wraps
def json_response(function):
@wraps(function)
def wrap(request, *args, **kwargs):
response = function(request, *args, **kwargs)
response['Content-Type'] = 'application/json; charset=UTF-8'
return response
return wrap
@json_response
def my_view(request):
# ....