Как установить 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):
    # ....

Вернуться на верх