Django Rest Framework - 如何在views.py上获取request.user?

时间:2013-11-05 23:18:42

标签: django django-rest-framework

我正在使用Django休息框架。我需要让用户访问views.py,但我无法。

from app.models import SmsToSend
from app.serializers import SmsToSendSerializer
from rest_framework import generics
from app.permissions import IsOwner
from rest_framework import permissions


class SmsToSendList(generics.ListCreateAPIView):
    queryset = SmsToSend.objects.all()
    serializer_class = SmsToSendSerializer
    permission_classes = (IsOwner, permissions.IsAuthenticated)

    def pre_save(self, obj):
        obj.owner = self.request.user

如何在此处调用request.user?

最诚挚的问候,

3 个答案:

答案 0 :(得分:1)

你非常接近。我想很多人都会花时间试图解决这个问题。将请求定义为view方法中的参数,您将可以像这样访问它。

def pre_save(self, request, obj):
    obj.owner = request.user

您可以这样查询。

request.REQUEST.get('<query>')

在序列化程序方法中,它略有不同,您可以获得这样的数据。

request = self.context['request']
user = request.user
query = request.GET['<query>']

希望这有用!

答案 1 :(得分:0)

class SmsToSendList(generics.ListCreateAPIView):
    #queryset = SmsToSend.objects.all()
    serializer_class = SmsToSendSerializer
    permission_classes = (IsOwner, permissions.IsAuthenticated)

    def get_queryset(self):
        user = self.request.user
        return SmsToSend.objects.filter(owner=user)  

    def pre_save(self, obj):
        obj.owner = self.request.user

我不得不使用get_queryset方法

而不是查询集

答案 2 :(得分:0)

def get_queryset(self, *args, **kwargs):
    user_id = self.request.user.id