()
views.py
from django.shortcuts import render
from rest_framework.response import Response
from rest_framework.parsers import JSONParser
from rest_framework.decorators import api_view
from .models import note
from .serializers import noteSerializer
@api_view(['GET'])
def getroute(request):
routes = [
{ 'Endpoint':'/note/',
'method':'GET',
'body':None,
'description':'Returns an array of notes'},
{ 'Endpoint':'/note/id',
'method':'GET',
'body':None,
'description':'Returns an single note object'},
{ 'Endpoint':'/note/create/',
'method':'POST',
'body':{'body':""},
'description':'creates a single note object'},
{ 'Endpoint':'/note/id/update',
'method':'PUT',
'body':{'body':""},
'description':'updates a single note object'},
{ 'Endpoint':'/note/id/delete',
'method':'DELETE',
'body':None,
'description':'deletes a single note object'}
]
return Response(routes)
@api_view(['POST'])
def createnote(request):
print("request.data")
data = JSONParser().parse(request)
serializer = noteSerializer(data=data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
@api_view(['GET'])
def getNotes(request):
notes = note.objects.all().order_by('-updated')
serializer = noteSerializer(notes,many=True)
return Response(serializer.data)
@api_view(['GET'])
def getNote(request,pk):
notes = note.objects.get(id=pk)
serializer = noteSerializer(notes,many=False)
return Response(serializer.data)
@api_view(['PUT'])
def updatenote(request,pk):
data =request.data
notes =note.objects.get(id=pk)
serializer = noteSerializer(instance=notes,data=data)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
@api_view(['Delete'])
def deletenote(request,pk):
notes = note.objects.get(id=pk)
notes.delete()
return Response("Note deleted")
模型.py
from django.db import models
class note(models.Model):
body = models.TextField(null=True,blank=True)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(auto_now_add=True)
序列化器.py
from rest_framework.serializers import ModelSerializer
from .models import note
class noteSerializer(ModelSerializer):
class Meta:
model = note
fields = '__all__'
首先我使用了 api/todo/create url,它向我显示了“详细信息”:“不允许使用方法“GET”。”我在 create 的 apiview 中添加了 get 方法,然后尝试通过 djangorest api 页面发布待办事项内容,并显示“detail”: “JSON parse error - Expecting value: line 1 column 1 (char 0)”,但是如果我尝试用 React 做同样的事情,post 方法有效。