Eva*_*rda 2 python django django-rest-framework
当我向端点发送 http OPTION 请求时,Django Rest Framework 使用以下 paylod 进行响应:
\n\n{\n "name": "Get Categorias",\n "description": "",\n "renders": [\n "application/json",\n "text/html"\n ],\n "parses": [\n "application/json",\n "application/x-www-form-urlencoded",\n "multipart/form-data"\n ]\n}\nRun Code Online (Sandbox Code Playgroud)\n\n以及以下标题:
\n\nDate \xe2\x86\x92Fri, 08 Feb 2019 12:25:50 GMT\nServer \xe2\x86\x92Apache/2.4.29 (Ubuntu)\nContent-Length \xe2\x86\x92173\nVary \xe2\x86\x92Accept\nAllow \xe2\x86\x92GET, HEAD, OPTIONS\nX-Frame-Options \xe2\x86\x92SAMEORIGIN\nKeep-Alive \xe2\x86\x92timeout=5, max=100\nConnection \xe2\x86\x92Keep-Alive\nContent-Type \xe2\x86\x92application/json\nRun Code Online (Sandbox Code Playgroud)\n\n这是代码:
\n\n@permission_classes((AllowAny,))\nclass GetCategorias(APIView):\n def get(self, request):\n\n query = "SELECT * FROM categoria ORDER BY nome ASC;"\n\n find = FuncaoCursorFetchAll.queryCursor(query)\n if find:\n result = []\n for cat in find:\n result.append({"id" : cat[0], "categoria" : cat[1]})\n\n\n response = JsonResponse({"categorias" : result}, encoder=DjangoJSONEncoder,safe=False,content_type="application/json;charset=utf-8")\n response[\'Access-Control-Allow-Origin\'] = \'*\'\n response[\'Access-Control-Allow-Methods\'] = \'GET, OPTIONS, HEAD\'\n response[\'Access-Control-Allow-Headers\'] = \'Content-Type, Authorization\'\n return response\n else:\n data = {"error": "Nenhum registro encontrado"}\nRun Code Online (Sandbox Code Playgroud)\n\n网址定义:
\n\npath(\'categorias/\', views.GetCategorias.as_view(), name=\'categorias\'),\nRun Code Online (Sandbox Code Playgroud)\n\n我需要覆盖这个标题。我不知道这是从哪里来的,因为我没有 OPTIONS 请求的明确端点。任何人都可以帮助我发现在哪里可以配置我需要的正确标头?
\n您可以options轻松覆盖。
from rest_framework.response import Response
class ClassBasedView(APIView):
def options(self, request, *args, **kwargs):
return Response({'foo': 'bar'})
@api_view(['GET', 'POST', 'OPTIONS'])
def func_based_view(request):
if request.method == 'OPTIONS':
return Response({'foo': 'bar'})
else:
return Response({'message': 'not options!'})
Run Code Online (Sandbox Code Playgroud)
如果您不了解 REST 框架中的视图?检查这个文档
您想覆盖标头吗?您可以通过 给出您自己的标题Response。检查此响应文档
您的OPTIONS有效负载是metadata您的视图。您还可以覆盖元数据。请参阅此元数据文档
| 归档时间: |
|
| 查看次数: |
2084 次 |
| 最近记录: |