Django-DRF-图书增删改查 !!!
自己封装的
class MyResponse():
def __init__(self):
self.status = 100
self.msg = None @property
def get_dic(self):
return self.__dict__ # 自己封装的
# class List():
# def get_list(self, request):
# response = MyResponse()
# book_list = self.model.objects.all()
# book_ser = self.serializer(instance=book_list, many=True)
# print(book_ser.data)
# response.books = book_ser.data
# return Response(response.get_dic)
#
#
# class ObjSave():
# def save(self, request):
# response = MyResponse()
# book_ser = self.serializer(data=request.data)
# if book_ser.is_valid():
# book_ser.save()
# else:
# response.status = 101
# response.msg = book_ser.errors
# return Response(response.get_dic)
#
#
# class Books(List, ObjSave, APIView):
# model = models.Book
# serializer = BookSerializer
#
# def get(self, request):
# return self.get_list(request)
#
# def post(self, request):
# return self.save(request)
#
#
# class Publishs(List, ObjSave, APIView):
# model = models.Publish
# serializer = PublishSer
#
# def get(self, request):
# return self.get_list(request)
#
# def post(self, request):
# return self.save(request)
#
#
# from django.core.exceptions import ObjectDoesNotExist
#
#
# class Book(APIView):
# def get(self, request, id):
# response = MyResponse()
# try:
# book = models.Book.objects.get(pk=id)
# book_ser = BookSerializer(instance=book, many=False)
# response.book = book_ser.data
# except ObjectDoesNotExist as e:
# response.status = 101
# response.msg = 'id不存在'
#
# except Exception as e:
# print(e)
# response.status = 201
# # response.msg = '您的操作有误'
# response.msg = str(e)
# return Response(response.get_dic)
#
# def put(self, request, id):
# response = MyResponse()
# try:
# book = models.Book.objects.get(pk=id)
# book_ser = BookSerializer(data=request.data, instance=book)
# if not book_ser.is_valid():
# raise Exception('数据校验失败')
# book_ser.save()
# response.book = book_ser.data
# response.msg = '修改成功'
# except ObjectDoesNotExist as e:
# response.status = 101
# response.msg = 'id不存在'
#
# except Exception as e:
# print(e)
# response.status = 201
# # response.msg = '您的操作有误'
# response.msg = str(e)
# return Response(response.get_dic)
#
# def delete(self, request, id):
# response = MyResponse()
# try:
# models.Book.objects.filter(pk=id).delete()
# response.msg = '删除成功'
# except Exception as e:
# print(e)
# response.status = 201
# # response.msg = '您的操作有误'
# response.msg = str(e)
# return Response(response.get_dic)
drf帮咱封装的
# drf帮咱封装的
from rest_framework.mixins import CreateModelMixin, RetrieveModelMixin, ListModelMixin, UpdateModelMixin, \
DestroyModelMixin
from rest_framework.generics import GenericAPIView # class Publishs(GenericAPIView, CreateModelMixin, ListModelMixin):
# queryset = models.Publish.objects
# serializer_class = PublishSer
#
# def get(self, request):
# return self.list(request)
#
# def post(self, request):
# return self.create(request) # DestroyModelMixin:删除
# UpdateModelMixin,:更新
# RetrieveModelMixin :获取一条
# CreateModelMixin:新增一条
# ListModelMixin:获取所有
# class Publish(GenericAPIView, DestroyModelMixin, UpdateModelMixin, RetrieveModelMixin):
# queryset = models.Publish.objects
# serializer_class = PublishSer
# lookup_field='id'
#
# def get(self, request, *args, **kwargs):
# return self.retrieve(request, *args, **kwargs)
#
# def delete(self, request, *args, **kwargs):
# return self.destroy(request, *args, **kwargs)
#
# def put(self, request, *args, **kwargs):
# return self.update(request, *args, **kwargs) # from rest_framework.generics import ListCreateAPIView, RetrieveUpdateDestroyAPIView, CreateAPIView, ListAPIView, \
# RetrieveAPIView, RetrieveUpdateAPIView, DestroyAPIView
#
# #
# class Publishs(ListCreateAPIView):
# queryset = models.Publish.objects.all()
# serializer_class = PublishSer
#
#
# class Publish(RetrieveUpdateDestroyAPIView):
# queryset = models.Publish.objects.all()
# serializer_class = PublishSer
from rest_framework.parsers import JSONParser
from rest_framework.parsers import FormParser
from rest_framework.viewsets import ModelViewSet
from rest_framework.views import APIView
from rest_framework.renderers import JSONRenderer
class PublishView(ModelViewSet):
# renderer_classes=[JSONRenderer,]
parser_classes=[JSONParser,FormParser]
queryset=models.Publish.objects.all()
serializer_class=PublishSer
ViewSetMixin 重写了as_view方法
from rest_framework.viewsets import ViewSetMixin
# ViewSetMixin 重写了as_view方法 # ViewSetMixin 写在前面,先找ViewSetMixin的as_view方法
# 用了ViewSetMixin ,视图类中,不需要再写get,post,delete....这些函数了,函数名可以自定义
# 而且这个视图类,可以响应多条路由
# class PublishView(ViewSetMixin,APIView):
# def aaa(self,request):
#
# return Response({'status':100})
# def bbb(self,request):
# return Response({'bb': "bbb"}) # 'DEFAULT_PARSER_CLASSES': (
# 'rest_framework.parsers.JSONParser',
# 'rest_framework.parsers.FormParser',
# 'rest_framework.parsers.MultiPartParser'
# )
路由url
from django.conf.urls import url,include
from django.contrib import admin
from app01 import views
# from rest_framework import routers
# router=routers.DefaultRouter()
# # 两个参数,一个是匹配的路由,一个是视图中写的CBV的类
# router.register('publish',views.PublishView)
urlpatterns = [
url(r'^admin/', admin.site.urls),
url(r'^login/', views.Login.as_view()),
# as_view()类的绑定方法
# url(r'^books/', views.Books.as_view()),
# url(r'^publishs/', views.Publishs.as_view()),
# url(r'^publish/(?P<pk>\d+)', views.Publish.as_view()),
# url(r'^book/(?P<id>\d+)', views.Book.as_view()),
# MyViewSet.as_view({'get': 'list', 'post': 'create'})
url(r'^publishs/', views.PublishView.as_view({'get': 'list','post':'create'})),
# url(r'^publish\.(?P<format>\w+)$', views.PublishView.as_view({'get': 'list','post':'create'})),
url(r'^publish/(?P<pk>\d+)', views.PublishView.as_view({'get': 'retrieve','put':'update','delete':'destroy'})), # 原来的视图类,只能响应一个路由
# 现在的视图类,可以响应多个路由
# url(r'^publishs/', views.PublishView.as_view({'get': 'aaa','post':'ddd'})),
#
# url(r'^bbb/', views.PublishView.as_view({'get': 'bbb','post':'ccc'})),
# url(r'', include(router.urls))
]
url控制

解析器
响应器


模板文件查找顺序
-先从项目中找
Django-DRF-图书增删改查 !!!的更多相关文章
- Django ORM 数据库增删改查
Django ORM 数据库增删改查 增 # 创建.增加数据(推荐) models.UserInfo.objects.create(username=') # 创建.增加数据 dic = {'} mo ...
- 基于DRF的图书增删改查练习
功能演示 信息展示 添加功能 编辑功能 删除功能 DRF构建后台数据 本例的Model如下 from django.db import models class Publish(models.Mode ...
- 基于DRF的图书增删改查
功能演示 信息展示 添加功能 编辑功能 删除功能 DRF构建后台数据 本例的Model如下 from django.db import models class Publish(models.Mode ...
- django -- ORM实现图书增删改查
表结构设计 上篇我们实现了出版社的增删改查,出版社数据表有两个字段id和name,那图书的表结构怎么设计呢?图书也要有一个主键id,还要有一个名称title,是哪个出版社的,要有个字段press和Pr ...
- Django数据库操作(增删改查)
Django数据库操作(增删改查) 创建数据库中的一个表 class Business(models.Model): #自动创建ID列 caption = models.CharField(max_l ...
- day 67 django 之ORM 增删改查基础
一 操作基础前提准备 1. 新建django 项目 mysite 子项目app01 ,选择好做路径. 2 .2-1在app01 下面models 中引用 模块 from django.db im ...
- Django models 的增删改查
增 from app01.models import * #create方式一: Author.objects.create(name='Alvin') #create方式二: Author.obje ...
- Django中ORM增删改查
新建模型 class Author(models.Model): nid = models.AutoField(primary_key=True) name=models.CharField( max ...
- django数据库的增删改查
正常启动服务安装数据库cmd命令:python manage.py makemigrations 创建用户 在pxm里面会有一个py文件..这就是生成了表结构cmd命令:python manage.p ...
- django数据库基本操作-增删改查(tip)-基本
补充:django外键保存 #外键保存 form_data = Form_Data() project, is_created = Project_Name.objects.get_or_create ...
随机推荐
- springboot 集成swagger
了解到swagger 就记录下用法 pom.xml <dependency> <groupId>io.springfox</groupId> <artifac ...
- Python——设计模式——单例模式
一个类始终只有一个实例 当你第一次实例化这个类的时候,就创建一个实例化得对象 当你之后再来实例化的时候,就用之前创建的对象 class A: __instance = False def __ini_ ...
- Vivado中VIO核使用
前言 使用场景:在使用In system debug时需要使用按键触发查看相关信号,但不想用板子上的按键. VIO:Virtual input output,即虚拟IO. 主要用作虚拟IO使用:VIO ...
- python学习day8 文件操作(深度学习)
文件操作 (day7内容扩展) 1 文件基本操作 obj = open('路径',mode='模式',encoding='编码')obj.write()obj.read()obj.close() 2 ...
- 忘掉Ghost!利用Win10自带功能,玩转系统备份&恢复 -- 系统重置
之前几篇介绍的如何备份.恢复系统,在遇到问题的时候可以轻松应对. 如果系统出现问题,还可以正常启动,但是之前没有备份过系统,那该怎么办? 碰到这种问题,可以使用Win10系统的“系统重置”功能: 按照 ...
- 如何将JPG格式的图片转换成PNG格式
study from : https://jingyan.baidu.com/article/6079ad0e63a4fc28ff86db37.html
- ES6部分知识点总结
注:本文通过yck前端面试小册学习整理而得,记录下来供自己查阅 1.var 变量提升 使用var声明的变量,声明会被提升到作用域的顶部 举几个例子: eg1: console.log(a) // un ...
- MySQL_表锁_lock tables tableName read
pre.环境准备 1.建立两个表S,T,并插入一些数据 --创建表S create table S(d int) engine=innodb; ); --创建表T create table T(c i ...
- C#获取根目录的方法总结
1.控制台应用程序 static void Main(string[] args) { //1.Environment.CurrentDirectory Console.WriteLine(Envir ...
- LFYZ-OJ ID: 1016 输油管道问题
分析 根据之前的证明,我们已经知道最佳输油管线的y位置就是所有油井y坐标序列的中位数,故解题过程为: 1. 读入n个y数据 2. 对n个y数据进行排序(升序或降序) 3. 求中位数zws 4. 计算输 ...
