【发布时间】:2021-10-27 18:25:07
【问题描述】:
我是 DRF 的新手,如果这是一个微不足道的问题,我深表歉意。
我想创建一个 API 端点,以便在点击指定 URL 时自动增加数据库中列的值。
例如:
在 models.py 文件中我有:
class User(models.Model):
name = models.CharField(null=False, blank=False, max_length=250)
error= models.IntegerField(null=False, blank=False)
我应该如何编写一个基于类的 API 视图和基于函数的 API 视图,只要关联的 URL 命中,error 的值就会增加 1?
在 URL 中,还应传递行的 ID,例如:
localhost:8000/users/error/<id>
点击上述 URL 后,用户 2 的错误值应加一。
下面是我写的功能视图,但是它不能正常工作。
ERROR1:如果 URL 被命中并且数据库中不存在 id,那么响应也是 201。
@api_view(['POST'])
@permission_classes([permissions.IsAuthenticatedOrReadOnly])
def updateClick(request, uri_id):
p = Url_data.objects.filter(uri_id=uri_id).update(clicks=F('clicks')+1)
print("PPPP: ", p)
url_obj = Url_data.objects.all()
serializer = ClickSerializer(url_obj, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.status_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
谢谢,
【问题讨论】:
标签: python django rest django-rest-framework django-views