gpt4 book ai didi

python - “请求”对象不可迭代

转载 作者:太空宇宙 更新时间:2023-11-04 08:36:53 24 4
gpt4 key购买 nike

我正在尝试使用 django rest 框架为移动设备做简单的 crud 演示项目 API,并遇到以下错误

enter image description here

项目名称:crud_demo

应用名称:crud_operations

crud_demo/urls.py

from django.conf.urls import include, url
from django.urls import path

urlpatterns= [
path('models/', views.model_list),
path('models/<int:pk>/', views.model_detail),
]

crud_operations/models.py

  from django.db import models

# Create your models here.

class Member(models.Model):
firstname = models.CharField(max_length=40)
lastname = models.CharField(max_length=40)

crud_operations/serializers.py

from crud_operations.models import Member
from rest_framework import serializers

class MemberSerializer(serializers.ModelSerializer):
class Meta:
model = Member
fields = ('firstname', 'lastname')

crud_operations/views.py

from django.shortcuts import render, redirect
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework import status
from .models import Member
from crud_operations.serializers import MemberSerializer

@api_view(['GET', 'POST'])
def model_list(request):
if request == 'GET':
member = Member.objects.all()
serializer = MemberSerializer(member)
return Response(serializer.data)
elif request == 'POST':
serializer = MemberSerializer(data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
return Response({'key': request}, status=status.HTTP_200_OK)


@api_view(['GET', 'PUT', 'DELETE'])
def model_detail(request, pk):
try:
member = Member.objects.get(pk=pk)
except Member.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)

if request == 'GET':
serializer = MemberSerializer(member)
return Response(serializer.data)

elif request == 'PUT':
serializer = MemberSerializer(member, data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)

elif request.method == 'DELETE':
member.delete()
return Response(status=status.HTTP_204_NO_CONTENT)

return Response({'key': 'value'}, status=status.HTTP_200_OK)

最佳答案

@api_view(['GET', 'POST'])
def model_list(request):
if request.method == 'GET':
member = Member.objects.all()
serializer = MemberSerializer(member)
return Response(serializer.data)
elif request.method == 'POST':
serializer = MemberSerializer(data=request.DATA)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
return Response({'key': request}, status=status.HTTP_200_OK)

request包含很多对象,所以要检查类型,需要使用HttpRequest对象的method属性,来检查是什么类型的请求就是这样,试试上面的答案

关于python - “请求”对象不可迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48314739/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com