How to add an HTTP header to all Django responses

前端 未结 2 2018
野性不改
野性不改 2020-12-30 20:41

I\'d like to add a few headers to all responses that my Django website returns. Is there a way to do this (besides adding a wrapper to the render function)?

相关标签:
2条回答
  • 2020-12-30 20:59

    When returning 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 
    
    0 讨论(0)
  • 2020-12-30 21:22

    Yes, you should have a look at middlewares.

    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
    

    yourproject/settings.py

    MIDDLEWARE = [
        ...,
        'yourapp.middleware.MyMiddleware',
        ...,
    ]
    
    0 讨论(0)
提交回复
热议问题