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 ...
随机推荐
- appium框架之bootstrap
(闲来无事,做做测试..)最近弄了弄appium,感觉挺有意思,就深入研究了下. 看小弟这篇文章之前,先了解一下appium的架构,对你理解有好处,推荐下面这篇文章:testerhome appium ...
- php函数 array_column
<?php $arr = [ [ 'id'=>1, 'name'=>'wang', 'age'=>10 ], [ 'id'=>2, 'name'=>'yong', ...
- [转帖]Sqlserver BCP 的用法
SQL Server中bcp命令的用法以及数据批量导入导出 http://www.cnblogs.com/xwdreamer/archive/2012/08/22/2651180.html 我这边使用 ...
- SpringMVC学习手册(三)------EL和JSTL(上)
1.含义 EL: Expression Language , 表达式语言 JSTL: Java Server Pages Standard Tag Library, JSP标准标签库 ...
- 基于HA机制的Nginx配置实现
Keepalived是一个基于VRRP协议来实现服务高可用方案.下载地址:http://www.keepalived.org/ keepalived-1.2.24.tar.gz VRRP协议:虚拟路由 ...
- 六、Java多人博客系统-2.0版本-代码实现
1.前后端分离,后端使用spring boot,只负责提供数据,对外暴露Restful API.前端使用vue,只负责展示数据和向后台提交数据. 2.数据库使用mariadb,存储所有数据. 3.前端 ...
- DRF之频率限制、分页、解析器和渲染器
一.频率限制 1.频率限制是做什么的 开放平台的API接口调用需要限制其频率,以节约服务器资源和避免恶意的频繁调用. 2.频率组件原理 DRF中的频率控制基本原理是基于访问次数和时间的,当然我们可以通 ...
- CentOS 7安装MongoDB
1 下载安装包 wget https://fastdl.mongodb.org/linux/mongodb-linux-x86_64-rhel70-3.2.4.tgz 2 解压 .tgz 3 将解压包 ...
- yyb博客的几道神仙题
该比赛链接 T5 题意: 给你一个\(n\times n\)的网格,开始有\(m\)个被涂成黑色的格子,如果存在三个格子\((x,y)\),\((y,z)\),\((z,x)\)满足\((x,y)\) ...
- 利用zabbix api添加、删除、禁用主机
python环境配置yum -y install python-pip安装argparse模块pip install -i https://pypi.douban.com/simple/ argpar ...
