改变响应
有时你会想要在响应即将被提供之前对其进行更改,例如添加一个头部或修改一个 cookie。
要做到这一点,只需声明一个函数参数,类型为 HttpResponse
:
from django.http import HttpRequest, HttpResponse
@api.get("/cookie/")
def feed_cookiemonster(request: HttpRequest, response: HttpResponse):
# Set a cookie.
response.set_cookie("cookie", "delicious")
# Set a header.
response["X-Cookiemonster"] = "blue"
return {"cookiemonster_happy": True}
临时响应对象
这个响应对象用于 Django Ninja 构建的所有响应的基础,包括错误响应。
如果一个 Django HttpResponse
对象直接由一个操作返回,那么这个对象就 不会 被使用。
显然这个响应对象还不会包含内容,但它确实设置了 content_type
(但你可能不想去更改它)。
status_code
将根据返回值被覆盖(默认是 200,如果返回一个两部分的元组,则是该状态码)。
改变基础响应对象
你可以通过覆盖 NinjaAPI.create_temporal_response
方法来改变这个临时响应对象。
def create_temporal_response(self, request: HttpRequest) -> HttpResponse:
response = super().create_temporal_response(request)
# Do your magic here...
return response
大功告成
继续下一章节! 从 Django models 中生成 Schema
评论
本文总阅读量次