使用Django完成接口API的开发(REST)
程序员文章站
2022-03-04 21:55:37
使用Django实现RESTurls.py代码展示from django.conf.urls import urlfrom . import viewsurlpatterns = [ # 列表视图的路由 url(r'^books/$', views.BookListView.as_view()), # 详情视图的路由 url(r'^books/(?P\d+)/$',views.BookDetailView.as_view()),]vie...
使用Django实现REST
urls.py
代码展示
from django.conf.urls import url
from . import views
urlpatterns = [
# 列表视图的路由
url(r'^books/$', views.BookListView.as_view()),
# 详情视图的路由
url(r'^books/(?P<pk>\d+)/$',views.BookDetailView.as_view()),
]
views.py
- 导入的库
from django.views import View
from .models import BookInfo
from django.http import JsonResponse,HttpResponse
import json
- 列表视图(包含了查询所有记录以及添加记录)
class BookListView(View):
'''列表视图'''
def get(self, request):
'''查询所有图书接口'''
bookList = []
# 1. 查询出所有图书模型
books = BookInfo.objects.all()
# 2.遍历查询集,取出里面的每个书籍模型对象, 把模型对象转换成字典
for book in books:
bookList.append({
'book_id' : book.id,
'btitle' : book.btitle,
'bpub_date' : book.bpub_date,
'bread' : book.bread,
'bcomment' : book.bcomment,
'is_delete' : book.is_delete
})
# 3.响应
return JsonResponse(bookList, safe=False)
def post(self, request):
'''新增图书接口'''
# 1.获取前端传入的请求体数据
json_str_bytes = request.body
# 2.把bytes类型的json字符串转换成json_str, 利用json.loads将json字符串转换成json字典/列表
json_str = json_str_bytes.decode()
json_dict = json.loads(json_str)
# 3.创建模型对象并保存
book = BookInfo(
btitle = json_dict['btitle'],
bpub_date = json_dict['bpub_date']
)
book.save()
# 第二种增加方法
# BookInfo.objects.create(
# btitle=json_dict['btitle'],
# bpub_date=json_dict['bpub_date']
# )
# 4.新增的模型转换成字典
book_dict = {
'book_id': book.id,
'btitle': book.btitle,
'bpub_date': book.bpub_date,
'bread': book.bread,
'bcomment': book.bcomment,
'is_delete': book.is_delete
}
# 5.响应新增的数据
return JsonResponse(book_dict, safe=False)
- 详情视图(查询单个记录,删除单个记录,修改单条记录)
class BookDetailView(View):
'''详情视图'''
def get(self,request, pk):
'''查询所有图书接口'''
# 1.获取指定pk的模型对象
try:
book = BookInfo.objects.get(id=pk)
except BookInfo.DoesNotExist:
return HttpResponse({'message':'查询的数据不存在'}, status=404)
# 2.模型对象转字典
book_dict = {
'book_id': book.id,
'btitle': book.btitle,
'bpub_date': book.bpub_date,
'bread': book.bread,
'bcomment': book.bcomment,
'is_delete': book.is_delete
}
# 3.响应
return JsonResponse(book_dict)
def put(self, request, pk):
'''修改指定图书接口'''
# 1.查询要修改的模型对象
book = BookInfo.objects.get(id=pk)
# 2.获取前端传入的新数据(把数据转换成字典)
# json_str_bytes = request.body
# json_str = json_str_bytes.decode()
# json_dict = json.loads(json_str)
json_dict = json.loads(request.body.decode())
# 3.重新给模型指定的属性赋值
book.btitle = json_dict['btitle']
book.bpub_date = json_dict['bpub_date']
# 4.调用save保存
book.save()
# 5.把修改后的模型转换成字典
book_dict = {
'book_id': book.id,
'btitle': book.btitle,
'bpub_date': book.bpub_date,
'bread': book.bread,
'bcomment': book.bcomment,
'is_delete': book.is_delete
}
# 6.响应
return JsonResponse(book_dict, safe=False)
def delete(self, request, pk):
'''删除指定图书接口'''
# 1. 查询指定的模型对象
try:
book = BookInfo.objects.get(id=pk)
except BookInfo.DoesNotExist:
return HttpResponse({'message': '删除的数据不存在'}, status=404)
# 2.删除指定的模型对象
book.delete() # 物理删除,在数据库里将记录删除
# 逻辑删除,这里将字段更改了
# book.is_delete = True
# book.save()
# 3.删除成功后有状态响应码,不可有状态响应体
return HttpResponse(status=200)
谢谢观看~
本文地址:https://blog.csdn.net/Seven597/article/details/110228885
上一篇: 大头不算小头算
下一篇: 介绍一些传家宝脚本语句大部分命令的解释
推荐阅读
-
django-rest-swagger对API接口注释的方法
-
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
-
Django使用AJAX调用自己写的API接口的方法
-
使用Protobuf推动微服务和REST API的开发
-
django rest framework 使用swagger生成api接口文档
-
使用Django完成接口API的开发(REST)
-
在 Angular-cli 中使用 simple-mock 实现前端开发 API Mock 接口数据模拟功能的方法
-
使用web api开发微信公众号调用图灵机器人接口的方法
-
使用web api开发微信公众号调用图灵机器人接口的方法
-
Django使用AJAX调用自己写的API接口的方法