1

我正在使用 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 ?

此致,

4

3 回答 3

1

你很亲密。我想很多人都花时间试图弄清楚这一点。在您的视图方法中将请求定义为参数,您将可以像这样访问它。

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>']

希望这有帮助!

于 2013-11-06T01:52:29.573 回答
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 方法而不是查询集

于 2013-11-06T11:07:23.590 回答
0
def get_queryset(self, *args, **kwargs):
    user_id = self.request.user.id
于 2020-08-14T22:52:54.363 回答