如何通过DJANGO REST API从模型中检索和创建数据?

如何通过DJANGO REST API从模型中检索和创建数据?,django,django-rest-framework,jwt,Django,Django Rest Framework,Jwt,我是Django和Django Rest框架的新手,所以我需要一些帮助 我想从Django中的模型接收时间数据。如果没有为特定用户存储时间,它应该创建它,保存在我的模型中,并返回该时间数据。我还使用简单的JWT进行令牌身份验证,这意味着没有有效的令牌,任何人都无法访问数据库 这是我目前的代码: 型号。py: class Mymodel(models.Model): emp= models.ForeignKey(User, on_delete = models.CASCADE) t

我是Django和Django Rest框架的新手,所以我需要一些帮助

我想从Django中的模型接收时间数据。如果没有为特定用户存储时间,它应该创建它,保存在我的模型中,并返回该时间数据。我还使用简单的JWT进行令牌身份验证,这意味着没有有效的令牌,任何人都无法访问数据库

这是我目前的代码:

型号。py:

class Mymodel(models.Model):
    emp= models.ForeignKey(User, on_delete = models.CASCADE)
    time = models.DateTimeField()
def get_time(request):
    if (request.method == 'GET'):
        tk = request.GET.get('token') #token stored in LocalStorage
        headers = {'Authorization': 'Bearer ' + tk}
        url = 'http://127.0.0.1:8000/my_api/'
        response = requests.get(url, headers)
        if response:
            user_id = User.objects.get(username=request.GET.get('username')).pk
            user = User.objects.get(id = user_id)
            if not Mymodel.objects.filter(emp=user).exists():
                current_time = timezone.now()
                create_time = Mymodel.objects.create(emp=user, time=current_time)
                data = create_time.time
        return HttpResponse(data)

class MyAPI(generics.ListAPIView):
    permission_classes = [IsAuthenticated]  #need to pass in JWT token in order to access the model.
    serializer = MySerializer
    def get_queryset(self):
        user_id = User.objects.get(username=request.GET.get('username')).pk
        user = User.objects.get(id = user_id)
        user_data = Mymodel.objects.all()
        queryset = user_data.filter(id=user_id)
        return queryset
class MySerializer(serializers.ModelSerializer):

    class Meta:
        model = Mymodel
        fields = ('time')
视图。py:

class Mymodel(models.Model):
    emp= models.ForeignKey(User, on_delete = models.CASCADE)
    time = models.DateTimeField()
def get_time(request):
    if (request.method == 'GET'):
        tk = request.GET.get('token') #token stored in LocalStorage
        headers = {'Authorization': 'Bearer ' + tk}
        url = 'http://127.0.0.1:8000/my_api/'
        response = requests.get(url, headers)
        if response:
            user_id = User.objects.get(username=request.GET.get('username')).pk
            user = User.objects.get(id = user_id)
            if not Mymodel.objects.filter(emp=user).exists():
                current_time = timezone.now()
                create_time = Mymodel.objects.create(emp=user, time=current_time)
                data = create_time.time
        return HttpResponse(data)

class MyAPI(generics.ListAPIView):
    permission_classes = [IsAuthenticated]  #need to pass in JWT token in order to access the model.
    serializer = MySerializer
    def get_queryset(self):
        user_id = User.objects.get(username=request.GET.get('username')).pk
        user = User.objects.get(id = user_id)
        user_data = Mymodel.objects.all()
        queryset = user_data.filter(id=user_id)
        return queryset
class MySerializer(serializers.ModelSerializer):

    class Meta:
        model = Mymodel
        fields = ('time')
序列化程序。py:

class Mymodel(models.Model):
    emp= models.ForeignKey(User, on_delete = models.CASCADE)
    time = models.DateTimeField()
def get_time(request):
    if (request.method == 'GET'):
        tk = request.GET.get('token') #token stored in LocalStorage
        headers = {'Authorization': 'Bearer ' + tk}
        url = 'http://127.0.0.1:8000/my_api/'
        response = requests.get(url, headers)
        if response:
            user_id = User.objects.get(username=request.GET.get('username')).pk
            user = User.objects.get(id = user_id)
            if not Mymodel.objects.filter(emp=user).exists():
                current_time = timezone.now()
                create_time = Mymodel.objects.create(emp=user, time=current_time)
                data = create_time.time
        return HttpResponse(data)

class MyAPI(generics.ListAPIView):
    permission_classes = [IsAuthenticated]  #need to pass in JWT token in order to access the model.
    serializer = MySerializer
    def get_queryset(self):
        user_id = User.objects.get(username=request.GET.get('username')).pk
        user = User.objects.get(id = user_id)
        user_data = Mymodel.objects.all()
        queryset = user_data.filter(id=user_id)
        return queryset
class MySerializer(serializers.ModelSerializer):

    class Meta:
        model = Mymodel
        fields = ('time')

我只想从我的表中读取数据,并检查用户是否有时间。如果没有,它应该在模型中创建时间。但是,我错在哪里呢?我是否正确地传递了承载令牌,API结构是否正确?提前谢谢你

首先,在模型中同时使用基于django方法和基于类的视图并不是最好的做法,只需auto_now=True即可

class Mymodel(models.Model):
    emp= models.ForeignKey(User, on_delete = models.CASCADE)
    time = models.DateTimeField(auto_now=True)
创建实例时,它将自动填充,您无需执行以下操作:

create_time = Mymodel.objects.create(emp=user, time=current_time)