如何确保数据来自 Django 中的登录用户?

How can I make sure that the data is from the login user in Django?

我正在尝试将从 Arduino 收到的数据保存在数据库中。我们已成功接收和存储温度和湿度数据,但无法 link 登录用户的数据。你能帮助我吗? 这是我的代码。

views.py

from .models import arduino
from .serializers import arduinoSerializers
from rest_framework.viewsets import ViewSet
from rest_framework.response import Response
from rest_framework.generics import CreateAPIView

class arduinoToAndroidViewSet (ViewSet) :
    def dataSend (self, request) :
        user = self.request.user
        queryset = arduino.objects.filter(name = user)
        serializer = arduinoSerializers(queryset, many=True)
        return Response(serializer.data)

class arduinoToDatabaseViewSet (CreateAPIView) :
    serializer_class = arduinoSerializers

    def get_queryset(self) :
        user = self.request.user
        return arduino.objects.filter(name = user)

    def dataReceive(self, request) :
        queryset = get_queryset()
        serializer = arduinoSerializers(queryset, many=True)
        if serializer.is_valid() :
            serializer.save()
        return Response(serializer.data)

serializers.py

from rest_framework import serializers
from .models import arduino

class arduinoSerializers (serializers.ModelSerializer) :
    name = serializers.CharField(source='name.username', read_only=True)
    class Meta :
        model = arduino
        fields = ('name', 'temp', 'humi')

如果你post喜欢这样,

我想让你知道这是根的数据。 我登录测试账号,把数据放进去,按下post按钮。 这不会迁移到 'test' 帐户。我想将此数据与 'test' 帐户一起迁移。

您可以使用权限来限制访问

为了将用户链接到您的数据,添加 perform_create 函数(我假设名称字段对用户而言是 FK)

from rest_framework.permissions import IsAuthenticated
from rest_framework.generics import CreateAPIView


class arduinoToDatabaseViewSet(CreateAPIView):
    permission_classes = [IsAuthenticated]  # only logged in users has access to this view

    def perform_create(self, serializer):
        serializer.save(name=self.request.user)