from rest_framework.views import APIView
from rest_framework.response import Response
from rest_framework import status
from .models import QandA
from .serializers import QandASerializer
import json
import random
from itertools import count
class QandAlist(APIView):
_ids = count(0)
def __init__(self):
self.id = next(self._ids)
def get(self, request):
questions = QandA.objects.all()
serializer = QandASerializer(questions, many=True)
return Response(serializer.data)
def post(self, request):
serializer = QandASerializer(data=request.data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data, status=status.HTTP_201_CREATED)
else:
try:
n = json.loads(request.body)
return Response(n)
except:
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
else:
questions = QandA.objects.order_by('?')[:n]
serializer = QandASerializer(questions, many=True)
return Response(serializer.data)
ここで私は2種類のjsonを受け入れようとしています。一度に一つ {「番号」:3}のように見えるQandAオブジェクト 相互にデータベースを更新 1、この番号が抽出されなければならない 3ランダムQandAオブジェクトがを除いDjango - 複数の同じ種類のjsonオブジェクトを同じポストメソッドで受け取る
すべてを返却しなければなりません」数字 "のものが動作します。 tryブロックは常に失敗し、私はQandAオブジェクトのすべてのフィールドを見逃していると言って例外を取得
Serializer.pyファイルだから
from rest_framework import serializers
from .models import QandA
class QandASerializer(serializers.ModelSerializer):
class Meta:
model = QandA
fields = ('question', 'answer', 'option_a', 'option_b', 'option_c')
あなたはリクエストを見ていたいと思う.DATA、request.bodyではない。 – perfect5th
またQandASerializerの定義を投稿すると役に立ちます。 – perfect5th
シリアライザファイルを追加しました。 – th3465