Перезаписать заголовок Django Rest Framework для запросов OPTION - PullRequest
0 голосов
/ 08 февраля 2019

Когда я отправляю запрос http OPTION на конечную точку, Django rest Framework отвечает следующим paylod:

{
    "name": "Get Categorias",
    "description": "",
    "renders": [
        "application/json",
        "text/html"
    ],
    "parses": [
        "application/json",
        "application/x-www-form-urlencoded",
        "multipart/form-data"
    ]
}

и следующими заголовками:

Date →Fri, 08 Feb 2019 12:25:50 GMT
Server →Apache/2.4.29 (Ubuntu)
Content-Length →173
Vary →Accept
Allow →GET, HEAD, OPTIONS
X-Frame-Options →SAMEORIGIN
Keep-Alive →timeout=5, max=100
Connection →Keep-Alive
Content-Type →application/json

Вот код:

@permission_classes((AllowAny,))
class GetCategorias(APIView):
    def get(self, request):

        query = "SELECT * FROM categoria ORDER BY nome ASC;"

        find = FuncaoCursorFetchAll.queryCursor(query)
        if find:
            result = []
            for cat in find:
                result.append({"id" : cat[0], "categoria" : cat[1]})


            response = JsonResponse({"categorias" : result}, encoder=DjangoJSONEncoder,safe=False,content_type="application/json;charset=utf-8")
            response['Access-Control-Allow-Origin'] = '*'
            response['Access-Control-Allow-Methods'] = 'GET, OPTIONS, HEAD'
            response['Access-Control-Allow-Headers'] = 'Content-Type, Authorization'
            return response
        else:
            data = {"error": "Nenhum registro encontrado"}

Определение URL:

path('categorias/', views.GetCategorias.as_view(), name='categorias'),

Мне нужно перезаписать этот заголовок.Я не знаю, откуда это идет, поскольку у меня нет явной конечной точки для запроса OPTIONS.Кто-нибудь может помочь мне узнать, где я могу настроить нужные мне заголовки?

1 Ответ

0 голосов
/ 08 февраля 2019

Вы можете легко переопределить options.

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!'})

Если вы не знаете о представлении в среде REST?Отметьте этот документ

А вы хотите переопределить заголовки?Вы можете дать свой собственный заголовок по Response.Проверьте это Ответный документ

Ваша полезная нагрузка OPTIONS составляет metadata вашего взгляда.Вы также можете переопределить метаданные.Посмотреть это Метаданные документ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...