【一】使用bytes格式提交数据
【一】创建表
class Book(models.Model):
name = models.CharField(max_length=50)
price = models.DecimalField(max_digits=5, decimal_places=2)
class Meta:
db_table = 'book2'
【二】后端
from urllib.parse import unquote
from django.http import JsonResponse
from django.shortcuts import render
from django.views import View
from normal.models import Book
# Create your views here.
class BookView(View):
def get(self, request):
obj_list = Book.objects.all()
l = []
for i in obj_list:
l.append({"name": i.name, "price": i.price})
return JsonResponse({'code': 100, 'msg': "查询成功", 'results': l})
# 增加
def post(self, request):
# urlencode和form-data格式
data = request.POST
Book.objects.create(name=data.get('name'), price=data.get('price'))
return JsonResponse({'code': 100, 'msg': "新增成功", })
class BookDetailView(View):
def get(self, request, pk):
obj = Book.objects.filter(pk=int(pk)).first()
return JsonResponse({'code': 100, 'msg': "查询成功", 'results': {'name': obj.name, 'price': obj.price}})
# 修改
def put(self, request, pk):
# request.body bytes格式转换成字符串
data = request.body.decode('utf-8')
print(data)
book_list=data.split('&') # 拿到一个列表
dic = {}
for item in book_list:
# 转码只给value转
dic[item.split('=')[0]] = unquote(item.split('=')[1])
print(dic)
Book.objects.filter(pk=int(pk)).update(**dic)
return JsonResponse({'code': 100, 'msg': "修改成功"})
def delete(self, request, pk):
obj = Book.objects.filter(pk=int(pk)).delete()
return JsonResponse({'code': 100, 'msg': "删除成功"})
【三】配置路由
from django.urls import path, include
from normal.views import *
urlpatterns = [
path('books/', BookView.as_view()),
path('books/<int:pk>', BookDetailView.as_view())
]
【四】使用Apifox测试
【1】新增数据
【二】查询所有
【三】查询单个
【四】删除
【五】修改
- put请求提交数据 django框架导致request.POST里面取不出值
【二】使用json格式提交数据
import json
from django.http import JsonResponse
from django.shortcuts import render
from django.views import View
from book.models import Book
# Create your views here.
class TaskView(View):
def get(self, request):
book_list = Book.objects.all()
l = []
for book in book_list:
l.append({"name": book.name, "price": book.price})
return JsonResponse({"code": 100, "message": '查询成功', "results": l})
def post(self, request):
data = json.loads(request.body)
book = Book.objects.create(**data)
return JsonResponse({"code": 100, "message": '添加成功',
"results": {"name": book.name, "price": book.price}})
class TaskDetailView(View):
# 查询单个
def get(self, request, id):
book = Book.objects.get(id=int(id))
return JsonResponse({"code": 100, "message": '查询单个成功',
"results": {"name": book.name, "price": book.price}})
# 修改
def put(self, request, id):
data = json.loads(request.body)
print(data)
book_update = Book.objects.filter(id=int(id)).update(**data)
return JsonResponse({"code": 100, "message": '修改数据成功'}
)
# 删除
def delete(self, request, id):
Book.objects.filter(id=int(id)).delete()
return JsonResponse({"code": 100, "message": '删除数据成功'})