自己封装的

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-图书增删改查 !!!的更多相关文章

  1. Django ORM 数据库增删改查

    Django ORM 数据库增删改查 增 # 创建.增加数据(推荐) models.UserInfo.objects.create(username=') # 创建.增加数据 dic = {'} mo ...

  2. 基于DRF的图书增删改查练习

    功能演示 信息展示 添加功能 编辑功能 删除功能 DRF构建后台数据 本例的Model如下 from django.db import models class Publish(models.Mode ...

  3. 基于DRF的图书增删改查

    功能演示 信息展示 添加功能 编辑功能 删除功能 DRF构建后台数据 本例的Model如下 from django.db import models class Publish(models.Mode ...

  4. django -- ORM实现图书增删改查

    表结构设计 上篇我们实现了出版社的增删改查,出版社数据表有两个字段id和name,那图书的表结构怎么设计呢?图书也要有一个主键id,还要有一个名称title,是哪个出版社的,要有个字段press和Pr ...

  5. Django数据库操作(增删改查)

    Django数据库操作(增删改查) 创建数据库中的一个表 class Business(models.Model): #自动创建ID列 caption = models.CharField(max_l ...

  6. day 67 django 之ORM 增删改查基础

    一 操作基础前提准备 1. 新建django 项目 mysite  子项目app01 ,选择好做路径. 2  .2-1在app01 下面models 中引用 模块 from  django.db im ...

  7. Django models 的增删改查

    增 from app01.models import * #create方式一: Author.objects.create(name='Alvin') #create方式二: Author.obje ...

  8. Django中ORM增删改查

    新建模型 class Author(models.Model): nid = models.AutoField(primary_key=True) name=models.CharField( max ...

  9. django数据库的增删改查

    正常启动服务安装数据库cmd命令:python manage.py makemigrations 创建用户 在pxm里面会有一个py文件..这就是生成了表结构cmd命令:python manage.p ...

  10. django数据库基本操作-增删改查(tip)-基本

    补充:django外键保存 #外键保存 form_data = Form_Data() project, is_created = Project_Name.objects.get_or_create ...

随机推荐

  1. 2018 C++ Teaching Assistant Summary

    期末考结束后就留校开始了科研,最近刚回家休息了两三天,整理了思绪,准备补上这一篇拖延了一个多月的助教小结. 早在一年多前我上栋哥这门课时,我就十分乐意给予同学帮助,无论是技术上的,还是说思想上的(也可 ...

  2. [转帖]UTC时间、GMT时间、本地时间、Unix时间戳

    UTC时间.GMT时间.本地时间.Unix时间戳 https://www.cnblogs.com/xwdreamer/p/8761825.html 引用: https://blog.csdn.net/ ...

  3. java学习之—实现一个简单的ArrayList

    package thread1; /** * 实现一个简单的ArrayList * * @Title: uminton */ public class SimpleArrayList<T> ...

  4. ABP项目概述

    在系统性介绍整个ABP框架之前,我们首先需要对ABP框架有一个大概的了解,ABP框架的全称是:Asp.Net Boilerplate Project(即Asp.Net 的样板项目)顾名思义就是能够通过 ...

  5. Python——封装

    广义上面向对象的封装:代码的保护,面向对象的思想本身是一种保护,只让自己的对象能调用自己累的方法 狭义上的封装——面向对象的三大特性之一  属性.方法都隐藏起来,不让你看见 规则: 1.所有的私有,都 ...

  6. mpvue——支持less

    安装 安装less和less-loader,我用的是淘宝源,你也可以直接npm $ cnpm install less less-loader --save 配置 打开build目录下的webpack ...

  7. 【XSY2962】作业 数学

    题目描述 有一个递推式: \[ \begin{align} f_0&=1-\frac{1}{e}\\ f_n&=1-nf_{i-1} \end{align} \] 求 \(f_n\) ...

  8. pymongo 使用方法(增删改查)

    #!/usr/bin/env python # -*- coding:utf-8 -*- """ MongoDB存储 在这里我们来看一下Python3下MongoDB的存 ...

  9. Windows编写的shell脚本,在linux上无法执行

    前两天由于要查一个数据库的binlog日志,经常用命令写比较麻烦,想着写一个简单的脚本,自动去刷一下数据库的binlog日志,就直接在windows上面写了,然后拷贝到linux中去运行,其实很简单的 ...

  10. Fiddler--QuickExec

    QuickExec在Fiddler中提供了比较快捷的功能服务. 在QuickExec输入框中输入命令,能快速地得到想要的结果. 快捷键:打开Fiddler后,按“Alt+q”,可将光标定位到Quick ...