我正在使用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?
最诚挚的问候,
答案 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