2016-05-07 4 views
1

Я хотел бы ограничить доступ к myweb/api в django rest framework.Django rest framework api-разрешение

Я пробовал:

REST_FRAMEWORK = { 
    'DEFAULT_PERMISSION_CLASSES': (
     'rest_framework.permissions.IsAuthenticated', 
    ) 
} 

Но это ограничивает все запросы, однако я хочу, чтобы ограничить доступ только к MyWeb/апи странице

+0

взгляд на этом уроке https://godjango.com/43-permissions-authentication-django-rest-framework-part-2/ –

+1

Вы можете указать классы разрешений для каждого вида под Myweb/API. Здесь есть два примера: http://www.django-rest-framework.org/api-guide/permissions/#setting-the-permission-policy –

ответ

1

Вы можете добавить либеральные права в settings.py файл и добавить более ограничительные в конкретном представлении api.

В settings.py, добавить что-то вроде:

'DEFAULT_PERMISSION_CLASSES': (
    'rest_framework.permissions.DjangoModelPermissionsOrAnonReadOnly' 
), 

вас может также использовать AllowAny разрешение.

Вы можете установить политику проверки подлинности для каждого представления или для каждого представления, используя представления, основанные на классе APIView.

from rest_framework.permissions import IsAuthenticated 
from rest_framework.response import Response 
from rest_framework.views import APIView 

class ExampleView(APIView): 
    permission_classes = (IsAuthenticated,) 

    def get(self, request, format=None): 
     content = { 
      'status': 'request was permitted' 
     } 
     return Response(content) 

Или, если вы используете @api_view декоратора с видом на основе функций.

from rest_framework.decorators import api_view, permission_classes 
from rest_framework.permissions import IsAuthenticated 
from rest_framework.response import Response 

@api_view('GET') 
@permission_classes((IsAuthenticated,)) 
def example_view(request, format=None): 
    content = { 
     'status': 'request was permitted' 
    } 
    return Response(content) 

При установке новых классов разрешений через атрибут класса или декоратор вы сообщаете вид, чтобы игнорировать список по умолчанию, установленный над файлом settings.py.