我打算为URL:url(r'^users/(?P<user_id>[0-9]+)/objects$', views.UserObject)
创建视图,以创建、更新、删除或显示用户的对象。此外,每个用户只能有一个对象。如果您能看一下并告诉我是否做得对,我将不胜感激。你知道吗
@api_view(['GET', 'POST', 'PUT', 'DELETE'])
def UserObject(request, user_id):
if request.method == 'POST':
try:
Object.objects.get(user=user_id)
return Response(status=status.HTTP_403_FORBIDDEN)
except Object.DoesNotExist:
serializer = ObjectSerializer(data=request.data)
serializer.fields['user'].required = False
if serializer.is_valid():
serializer.save(user_id=user_id)
return Response(serializer.data, status=status.HTTP_201_CREATED)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
try:
object = Object.objects.get(user=user_id)
except Object.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == 'GET':
serializer = ObjectSerializer(object)
return Response(serializer.data)
elif request.method == 'PUT':
serializer = ObjectSerializer(object, data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
elif request.method == 'DELETE':
object.delete()
return Response(status=status.HTTP_204_NO_CONTENT)
更新 视图.py地址:
from rest_framework import viewsets
class ObjectViewSet(viewsets.ModelViewSet):
queryset = Object.objects.all()
serializer_class = ObjectSerializer
你知道吗网址.py地址:
url(r'^users/(?P<user_id>[0-9]+)/objects$', views.ObjectViewSet),
这正是View sets的目的。。你知道吗
看来这里没有什么特别的逻辑
看起来你需要的就是
相关问题 更多 >
编程相关推荐