Лучшие практики управления Django auth с использованием сессий и методов на основе токенов в одном проекте

Я пытаюсь добавить поддержку API через django-rest-framework для всех представлений в моем проекте. Предположим, что все представления возвращают JSON-ответ и основаны на функциях.

Как я могу лучше всего справиться с этой ситуацией, не переписывая много кода?

Вот что у меня есть на данный момент:

views.py

@login_required
@require_POST
def get_data(request):
    #.... core logic ....
    return JsonResponse({'msg': '<...>'},status=200)    

@api_view(['POST'])
@authentication_classes([TokenAuthentication])
@permission_classes([IsAuthenticated])
def api_get_data(request):
    return get_data(request)

urls.py

    url(r'^get_data/$', views.get_data, name='get_data'),

    url(r'^api/v1/get_data/$', views.api_get_data, name='api_get_data'),

Я использую CSRFmiddleware, поэтому я получаю защиту CSRF для всех представлений.

Существует ли лучший подход, чем вышеуказанный, для достижения/обеспечения:

  1. Вызовы REST API работают без CORS/CSRF-токена
  2. >
  3. Вызовы на основе браузера работают только с CORS/CSTF-токеном

Буду признателен за любую помощь или предложения о том, как разработать/организовать проект для данного случая использования.

Вернуться на верх