我最終使用令牌認證: http://www.django-rest-framework.org/api-guide/authentication/
,所以我想分享的工作流程。
首先,您需要進行設置。在settings.py中,修改INSTALLED_APPS並像文檔一樣添加REST_FRAMEWORK。 然後你需要運行python manage.py syncdb
,因爲它需要添加一些表。 然後,您需要添加一些url到urls.py來路由api。 您可以創建並使用此代碼檢索標記:最後
from rest_framework.authtoken.models import Token
token = Token.objects.create(user=User.objects.get(username='john'))
print token.key
,你就必須修改您的看法取決於您是否使用基於函數或基於類的視圖。 這裏是一個基於功能視圖我用:
from rest_framework.authentication import TokenAuthentication
from rest_framework.permissions import IsAuthenticated
from rest_framework.response import Response
from rest_framework.views import APIView
from rest_framework.decorators import authentication_classes, permission_classes
from rest_framework.decorators import api_view
@api_view(['GET', 'POST'])
@authentication_classes((TokenAuthentication,))
@permission_classes((IsAuthenticated,))
@login_required
def mybooks(request):
entries = Book.objects.all()
return render(request, 'mybooks.html', {'entries': entries})
最後,測試一下:
import requests
token = '243124c52f7583e320d043c4395bd99f63344035'
headers = {'Authorization' : 'Token {}'.format(token)}
page = requests.post('http://127.0.0.1:8000/mybooks/', headers=headers)
print page.content
注意,在我的情況,我不需要定義普通系列化,因爲我有一個先進的自定義序列化這不是這裏的主題。
來源
2016-05-19 07:49:09
max
什麼?您爲什麼認爲您需要其他用戶的CSRF令牌,或者甚至認爲CSRF令牌已分配給特定用戶? –