Как добавить заголовок HTTP ко всем ответам Django

Я хотел бы добавить несколько заголовков ко всем ответам, которые возвращает мой веб-сайт Django. Есть ли способ сделать это (кроме добавления оболочки в функцию render)?


person Cisplatin    schedule 19.03.2016    source источник


Ответы (2)


Да, вам следует взглянуть на промежуточное ПО.

yourapp/middleware.py

class MyMiddleware:

    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, request):
        response = self.get_response(request)
        response['X-My-Header'] = "my value"
        return response

вашпроект/settings.py

MIDDLEWARE = [
    ...,
    'yourapp.middleware.MyMiddleware',
    ...,
]
person Antoine Pinsard    schedule 19.03.2016

При возврате JsonResponse.

from django.http import JsonResponse

data = {'key','value'} # some data

response = JsonResponse(data,status=200)

response['Retry-after'] = 345 # seconds 
response['custom-header'] = 'some value'

return response 
person Muhammad Faizan Fareed    schedule 03.08.2020