1、通过路由指定函数名称调用执行接口
2、实践
from django.db import models
class StudentInfo(models.Model):
name = models.CharField(max_length=200)
age = models.IntegerField()
sex = models.IntegerField()
classes = models.CharField(max_length=200)
from django.urls import path, re_path
from . import views
urlpatterns = [
re_path('getlist/$', views.getlist),
re_path('getdetail/(?P<pk>\d+)/$', views.getdetail),
re_path('create/$', views.create),
re_path('update/(?P<pk>\d+)/$', views.update),
re_path('delete/(?P<pk>\d+)/$', views.delete),
]
import json
from django.http import JsonResponse, HttpResponse
from drf.models import StudentInfo
"""获取列表"""
def getlist(request):
# 判断请求类型
if request.method == 'GET':
pass
else:
return HttpResponse(status=404)
# 指定查询集, 类型为:<QuerySet> 列表
queryset = StudentInfo.objects.all()
# 将查询出的数据转化为JSON数据并存入data列表,返回给前端
data = []
for stu in queryset:
data.append({
'id': stu.id,
'name': stu.name,
'age': stu.age,
'sex': stu.sex,
'classes': stu.classes
})
return JsonResponse(data, safe=False)
"""获取详情"""
def getdetail(request, pk):
# 判断请求类型
if request.method == 'GET':
queryset = StudentInfo.objects.get(id=pk)
else:
return HttpResponse(status=404)
# 将查询出的数据转为JSON传给前端
data = {'id': queryset.id,
'name': queryset.name,
'age': queryset.age,
'sex': queryset.sex,
'classes': queryset.classes}
return JsonResponse(data)
"""新增"""
def create(request):
# 判断请求类型
if request.method == 'POST':
pass
else:
return HttpResponse(status=404)
# 获取前端请求体中的数据,转为字典
request_dict = json.loads(json.dumps(request.POST))
"""
此处需要对请求参数request_dict进行判断,
"""
# 将请求数据存入数据库
# **request_dict: 将{'a': 'b'}转为 a=b
student = StudentInfo.objects.create(**request_dict)
# data为返回给前端的数据,类型: JSON
data = {'id': student.id,
'name': student.name,
'age': student.age,
'sex': student.sex,
'classes': student.classes}
return JsonResponse(data)
"""更新"""
def update(request, pk):
# 判断请求类型
if request.method == 'PUT':
queryset = StudentInfo.objects.get(id=pk)
else:
return HttpResponse(status=404)
# 获取前端请求体中的数据,转为字典
request_dict = json.loads(json.dumps(request.GET))
"""
此处需要对请求参数request_dict进行判断,得出哪些字段需要被更新
"""
queryset.name = request_dict['name']
queryset.save()
# 将查询出的数据转为JSON传给前端
data = {'id': queryset.id,
'name': queryset.name,
'age': queryset.age,
'sex': queryset.sex,
'classes': queryset.classes}
return JsonResponse(data)
"""删除"""
def delete(request, pk):
# 判断请求类型
if request.method == 'DELETE':
queryset = StudentInfo.objects.get(id=pk)
else:
return HttpResponse(status=404)
# 删除
queryset.delete()
return HttpResponse(status=204)
5、结果: