2015-11-16 2 views
3

Таким образом, у меня есть основанный вид функции в моей рамках отдыха Django и я делать проверку подлинности в нем следующим образом:аутентификации в Django отдыха рамочным функции на основе мнения

from rest_framework import status 
from rest_framework.decorators import api_view 
from rest_framework.response import Response 

@api_view(['GET']) 
def analytics_filter_values(request): 
    if request.user.is_authenticated(): 
     pass 
    else: 
     return Response("Unauthorized access", status=status.HTTP_403_FORBIDDEN) 
..... 
<business logic> 
..... 
..... 

Теперь в этой точке зрения файла, у меня есть немало мнения и внутри каждой функции, я использую, если еще проверить authentication.So для того, чтобы уменьшить строк кода, я решил сделать эту функцию, а затем вызвать его внутри каждого вида функции следующим образом:

from rest_framework import status 
from rest_framework.decorators import api_view 
from rest_framework.response import Response 

def check_authentication(request): 
if request.user.is_authenticated(): 
    pass 
else: 
    return Response("Unauthorized access", status=status.HTTP_403_FORBIDDEN) 

@api_view(['GET']) 
def analytics_filter_values(request): 
    check_authentication(request) 
..... 
<business logic> 
..... 
..... 

Однако это не работает. Это может быть действительно глупо, но я не знаю, как t o что здесь не так.

ответ

4

Для проверки подлинности пользователя нет необходимости использовать django restframework @permission_classes.

Вы можете сделать так:

from rest_framework.permissions import IsAuthenticated 
from rest_framework.decorators import permission_classes 

@api_view(['GET']) 
@permission_classes((IsAuthenticated,)) 
def example_view(request, format=None): 
    ..... 
    <business logic> 
    ..... 

Здесь @permission_classes((IsAuthenticated,)) декоратор будет проверять, если проверка подлинности пользователя перед отправкой запроса на ваш взгляд.

Вы можете узнать больше here

+0

спасибо .. это сработало .. – Amistad

Смежные вопросы