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 ...
随机推荐
- 2018 C++ Teaching Assistant Summary
期末考结束后就留校开始了科研,最近刚回家休息了两三天,整理了思绪,准备补上这一篇拖延了一个多月的助教小结. 早在一年多前我上栋哥这门课时,我就十分乐意给予同学帮助,无论是技术上的,还是说思想上的(也可 ...
- [转帖]UTC时间、GMT时间、本地时间、Unix时间戳
UTC时间.GMT时间.本地时间.Unix时间戳 https://www.cnblogs.com/xwdreamer/p/8761825.html 引用: https://blog.csdn.net/ ...
- java学习之—实现一个简单的ArrayList
package thread1; /** * 实现一个简单的ArrayList * * @Title: uminton */ public class SimpleArrayList<T> ...
- ABP项目概述
在系统性介绍整个ABP框架之前,我们首先需要对ABP框架有一个大概的了解,ABP框架的全称是:Asp.Net Boilerplate Project(即Asp.Net 的样板项目)顾名思义就是能够通过 ...
- Python——封装
广义上面向对象的封装:代码的保护,面向对象的思想本身是一种保护,只让自己的对象能调用自己累的方法 狭义上的封装——面向对象的三大特性之一 属性.方法都隐藏起来,不让你看见 规则: 1.所有的私有,都 ...
- mpvue——支持less
安装 安装less和less-loader,我用的是淘宝源,你也可以直接npm $ cnpm install less less-loader --save 配置 打开build目录下的webpack ...
- 【XSY2962】作业 数学
题目描述 有一个递推式: \[ \begin{align} f_0&=1-\frac{1}{e}\\ f_n&=1-nf_{i-1} \end{align} \] 求 \(f_n\) ...
- pymongo 使用方法(增删改查)
#!/usr/bin/env python # -*- coding:utf-8 -*- """ MongoDB存储 在这里我们来看一下Python3下MongoDB的存 ...
- Windows编写的shell脚本,在linux上无法执行
前两天由于要查一个数据库的binlog日志,经常用命令写比较麻烦,想着写一个简单的脚本,自动去刷一下数据库的binlog日志,就直接在windows上面写了,然后拷贝到linux中去运行,其实很简单的 ...
- Fiddler--QuickExec
QuickExec在Fiddler中提供了比较快捷的功能服务. 在QuickExec输入框中输入命令,能快速地得到想要的结果. 快捷键:打开Fiddler后,按“Alt+q”,可将光标定位到Quick ...