1. 取所有实例,返回要用Json格式。
students = Student.objects.all().values()
return JsonResponse(list(students), safe=False)
2. 得到一个class实例对象
Class.objects.get(id=data.get("class_id"))
3. 删除一个实例对象
Student.objects.get(id=pk).delete()
4. request数据取出字典格式,查看request.data内是否有name数据
data = request.data
name = data.get("name", None)
或 , 但效率较低
"name" in data
5. request 请求允许访问
from rest_framework.views import APIView
增删查改接口代码:
from django.http import JsonResponse
from rest_framework.views import APIView
from student.models import Student, Class
class StudentView(APIView):
def get(self, request, *args, **kwargs):
students = Student.objects.all().values()
return JsonResponse(list(students), safe=False)
def post(self, request, *args, **kwargs):
data = request.data
class_ = Class.objects.get(id=data.get("class_id"))
stu = Student(
name=data.get("name"),
gender=data.get("gender"),
age=data.get("age"),
class_id=class_
)
stu.save()
res = {
"status": "success",
"data": data
}
return JsonResponse(res)
def delete(self, request, pk):
Student.objects.get(id=pk).delete()
res = {
"result": "delete!",
}
return JsonResponse(res)
def put(self, request, pk):
data = request.data
stu = Student(name=data.get("name"),age=data.get("age"),gender=data.get("gender"),class_id= Class.objects.get(id=data.get("class_id")))
stu.id=pk
stu.save()
res = {
"value": "put",
}
return JsonResponse(res)
def patch(self, request, pk):
stu = Student.objects.get(id=pk)
data = request.data
name = data.get("name", None)
gender = data.get("gender", None)
age = data.get("age", None)
class_id = data.get("class_id", None)
if name:
stu.name = name
if gender:
stu.gender = gender
if age:
stu.age = age
if class_id:
stu.class_id = Class.objects.get(id=class_id)
stu.save()
res = {
"value": data
}
return JsonResponse(res)