https://blog.csdn.net/weixin_45912307/article/details/109006264
# view.py
from django.shortcuts import render
# Create your views here.
from django.views import View
from books.models import BookInfo
import json
from django.http import JsonResponse
class BooksView(View):
massage = """
获取所有和新增
"""
def get(self, request):
# get update
# 1、查询所有图书对象
books = BookInfo.objects.all()
book_list = []
for book in books:
book_list.append(
{
'id': book.id,
'btitle': book.btitle,
'bread': book.bread,
'bcomment': book.bcomment,
'bpub_date': book.bpub_date,
}
)
return JsonResponse(book_list, safe=False)
# 2、返回图书数据 [{},{}.{}]
def post(self, request):
"""
新增
路由: POST/books
"""
# 1、获取前端数据
data = request.body.decode()
# 将json数据变为字典形式
data_dict = json.loads(data)
# 2、验证数据
btitle = data_dict.get('btitle')
bpub_date = data_dict.get('bpub_date')
if btitle is None or bpub_date is None:
return JsonResponse({'error': '错误信息'}, status=400)
# 3、保存数据
book = BookInfo.objects.create(btitle=btitle, bpub_date=bpub_date)
# 4、返回结果
return JsonResponse(
{
'id': book.id,
'btitle': book.btitle,
'bread': book.bread,
'bcomment': book.bcomment,
'bpub_date': book.bpub_date,
}
)
class BookView(View):
# get put delete
def get(self, request, pk):
"""
获取单个
"""
try:
# 1、获取前端数据 通过id路径查询
book = BookInfo.objects.get(id=pk)
except:
return JsonResponse({'error': '错误信息'}, status=400)
return JsonResponse({
'id': book.id,
'btitle': book.btitle,
'bread': book.bread,
'bcomment': book.bcomment,
'bpub_date': book.bpub_date,
})
def put(self, request, pk):
"""
修改
"""
data = request.body.decode()
data_dict = json.loads(data)
# 2、验证数据 先验证请求过来的名称和出版时间是否符合要求
btitle = data_dict.get('btitle')
bpub_date = data_dict.get('bpub_date')
if btitle is None or bpub_date is None:
return JsonResponse({'error': '错误信息'}, status=400)
# 3、更新数据
try:
book = BookInfo.objects.get(id=pk)
except:
return JsonResponse({'error': '错误信息'}, status=400)
# 4、返回结果
return JsonResponse({
'id': book.id,
'btitle': book.btitle,
'bread': book.bread,
'bcomment': book.bcomment,
'bpub_date': book.bpub_date,
})
def delete(self, request, pk):
"""
删除
"""
try:
book = BookInfo.objects.get(pk)
except:
return JsonResponse({'error': '错误信息'}, status=400)
book.is_delete = True
book.save()
return JsonResponse({},status=204)
在子应用下新建url.py文件,并添加如下配置
# urls.py
urlpatterns = [
url(r'^books/$', views.BooksVIew.as_view()),
url(r'^books/(?P<pk>\d+)/$', views.BookView.as_view())
]