django - 如何确保数据来自 Django 中的登录用户?
问题描述
我正在尝试将我从 Arduino 收到的数据保存在数据库中。我们已成功接收和存储温湿度数据,但未能将这些数据与登录用户关联。你能帮助我吗?这是我的代码。
视图.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)
序列化程序.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')
如果你这样发,
我想让你知道这是根的数据。 我登录测试帐户,输入数据,然后按发布按钮。 这不会迁移到“测试”帐户。我想与“测试”帐户一起迁移此数据。
解决方案
您可以使用权限来限制访问
并将用户链接到您的数据,添加 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)
推荐阅读
- java - 如何在两个反向代理后面配置 keycloak?
- sql - 当我在 tsql 上更新一条记录的 OrderNo 时如何更新其他 OrderNo
- angular - Travis 构建挂起等待用户输入(安装角度)
- javascript - 处理删除 NodeJS 中可能繁忙的文件的正确方法是什么?
- data-binding - Xamarin Forms:在活动重新启动时维护选定的选项卡
- arrays - 使用 Typescript 从数组中获取唯一的父元素
- python - 从 docker 容器中获取 sftp 服务器的主机 url
- angularjs - 在授权解决之前加载 AngularJS 模板 URL
- less - LESS:以类似于“嵌套规则”的方式创建变量
- laravel - 在 Laravel 5.8 中调用未定义的方法 Maatwebsite\Excel\Excel::create()