You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自定义Django中JsonResponse的响应头(如修改Date头)

修改Django中JsonResponse响应头的几种方法

方法1:直接修改JsonResponse实例的headers属性

JsonResponse是HttpResponse的子类,你可以直接操作它的headers字典来修改或添加响应头:

from django.http import JsonResponse

def your_view(request):
    # 初始化JsonResponse
    response = JsonResponse({"status": "success", "data": {}})
    # 修改Date头
    response.headers["Date"] = "Wed, 21 Oct 2015 07:28:00 GMT"
    # 也可以添加自定义响应头
    response.headers["X-App-Version"] = "1.0.0"
    return response

方法2:自定义JsonResponse子类(适合复用场景)

如果多个视图都需要统一修改响应头,自定义子类更高效:

from django.http import JsonResponse

class CustomJsonResponse(JsonResponse):
    def __init__(self, data, **kwargs):
        super().__init__(data, **kwargs)
        # 在这里预设自定义响应头
        self.headers["Date"] = "Wed, 21 Oct 2015 07:28:00 GMT"

# 视图中直接使用自定义类
def your_view(request):
    return CustomJsonResponse({"status": "success"})

方法3:中间件全局修改(所有JsonResponse生效)

如果需要对项目中所有JsonResponse统一修改响应头,使用中间件:

from django.http import JsonResponse

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

    def __call__(self, request):
        response = self.get_response(request)
        # 判断响应是否为JsonResponse实例
        if isinstance(response, JsonResponse):
            response.headers["Date"] = "Wed, 21 Oct 2015 07:28:00 GMT"
        return response

然后在项目settings.py的MIDDLEWARE列表中添加该中间件的路径,例如:

MIDDLEWARE = [
    # 其他中间件...
    "your_app.middleware.ModifyJsonHeadersMiddleware",
]

注意事项

Date头通常由Web服务器(如Nginx、Apache)自动生成,如果你手动修改后未生效,需要检查服务器配置,确保允许应用层覆盖该响应头。

内容的提问来源于stack exchange,提问作者mohamadreza ch

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 15:10:29