我知道我们可以使用HttpResponseInstance['headername'] = 'headervalue'
来给http响应添加头信息。但是这样做,我必须重写我正在使用的所有通用视图,这会增加更多的工作量。
是否有一种方便的方法来添加响应头,例如响应的回调或url装饰器?
这里有一个函数可以替换“render”,以便它包括响应头分配,而无需重复值分配到不同的响应头中。如果您不想重复代码并且想将更改应用于某些但不是所有视图,则可能很有用。下面是一个特定的函数,确保渲染不会缓存:
def render_cacheless(action, path, context):
response = render(action, path, context)
response["Cache-Control"] = "no-cache, no-store, must-revalidate"
response["Pragma"] = "no-cache"
response["Expires"] = "0"
return response
def home(request):
return render_cacheless(request, "/path/to/home.html", None)
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