2017-06-30 15 views
0

サイトにAPIを実装し、RESTフレームワークを選択する必要があります。トークンを通して行わ自動切断(rest_framework.authtokenDjango RESTフレームワーク

settings.py

REST_FRAMEWORK = { 
     'DEFAULT_PERMISSION_CLASSES': (
         'Rest_framework.permissions.IsAdminUser', 
    ), 
     'DEFAULT_AUTHENTICATION_CLASSES': (
         'Rest_framework.authentication.TokenAuthentication', 
        
    ), 

} 

view.py

@api_view(['GET', 'POST']) 
def task_list(request): 

    if request.method == 'GET': 
     tasks = Task.objects.all() 
     serializer = TaskSerializer(tasks, many=True) 
     return Response(serializer.data) 

    elif request.method == 'POST': 
     serializer = TaskSerializer(data=request.DATA) 
     if serializer.is_valid(): 
      serializer.save() 
      return Response(serializer.data, status=status.HTTP_201_CREATED) 
     else: 
      return Response(
       serializer.errors, status=status.HTTP_400_BAD_REQUEST) 

はエラーメッセージこのエラーを修正する方法

"Detail": "Authentication credentials were not provided." 

を与え、 GETメソッドを無効にする

+0

あなたは 'request.user.is_authenticated'ためのビューにロジックた場合、いくつかを入れて、GETブロックなどに行く避けることができます...そのよう –

答えて

0

TokenAuthenticationの場合、httpリクエストのヘッダーAuthorization: Token <user_token>を設定する必要があります。

あなたには、いくつかのビューでは、このビューのパーミッションクラスAllowAnyを指定することができるすべてのユーザーに許可したい場合:

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

あなたはobtain_auth_tokenビューを使用して、有効なトークンを生成することができます。あなたのurls.pyにこれを追加します。

from rest_framework.authtoken import views 
urlpatterns += [ 
    url(r'^api-token-auth/', views.obtain_auth_token) 
] 
+0

私は必要はありません。 'AllowAny'、私はトークンにアクセスする必要があります – Sonfire

+0

@Sonfireあなたはトークンを生成する必要がありますか?私は私の答えを更新し、それをチェックします。 – neverwalkaloner

+0

私はTOKENを生成しました。私は 'token:******'のヘッダにそれを示します。 エラーメッセージを返します – Sonfire

関連する問題