我遇到的情况是我将用户个人资料存储在不同的django模型中。
class Profile(models.Model):
user = models.OneToOneField(User, primary_key=True)
address = models.CharField(max_length=1000)
使用默认模型ViewSet我得到以下URL来获取/更新配置文件的特定实例
/api/profile/user
现在,由于我使用令牌身份验证,因此客户端只有令牌,并且不知道用户。如何写下面表格的网址
/api/profile
这对我来说似乎更自然,因为用户只能拥有一个Profile
对象,因此他的令牌足以在他的API调用中执行所有操作。
编写自定义视图是一种选择,但有没有什么方法可以利用DRF
以最少的手动实现来实现相同的目标?
答案 0 :(得分:0)
INSTALLED_APPS = [
'rest_framework',
'rest_framework.authtoken',
]
from rest_framework.authentication import SessionAuthentication, BasicAuthentication, TokenAuthentication
from rest_framework.permissions import IsAuthenticated
class GetToken(APIView):
authentication_classes = (SessionAuthentication, BasicAuthentication)
permission_classes = (IsAuthenticated,)
def get(self, request, format=None):
token = Token.objects.get_or_create(user=request.user)
context = {
"token": unicode(token[0]),
}
return Response(context, status=status.HTTP_200_OK)
class UsedToken(APIView):
authentication_classes = (TokenAuthentication)
permission_classes = (IsAuthenticated,)
def get(self, request, format=None):
# You are using TokenAuthentication and if header include your token then user access your stuff..
# Header: Authorization: 'Token yourtoken'
context = {}
return Response(context, status=status.HTTP_200_OK)