我最终使用令牌认证: 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令牌已分配给特定用户? –