models

from django.db import models

# Create your models here.

class Course(models.Model):
title=models.CharField(max_length=32)
desc=models.CharField(max_length=32) from django.db import models # Create your models here. class Author(models.Model):
nid = models.AutoField(primary_key=True)
name=models.CharField( max_length=32)
age=models.IntegerField() def __str__(self):
return self.name class Publish(models.Model):
nid = models.AutoField(primary_key=True)
name=models.CharField( max_length=32)
city=models.CharField( max_length=32)
email=models.EmailField() def __str__(self):
return self.name class Book(models.Model): nid = models.AutoField(primary_key=True)
title = models.CharField( max_length=32)
publishDate=models.DateField()
price=models.DecimalField(max_digits=5,decimal_places=2) # 与Publish建立一对多的关系,外键字段建立在多的一方
publish=models.ForeignKey(to="Publish",to_field="nid",on_delete=models.CASCADE)
# 与Author表建立多对多的关系,ManyToManyField可以建在两个模型中的任意一个,自动创建第三张表
authors=models.ManyToManyField(to='Author',)

urls

from django.conf.urls import url
from django.contrib import admin
from app01 import views
urlpatterns = [
url(r'^admin/', admin.site.urls), #方式一
url(r"^books/$",views.BookView.as_view()),
url(r"^books/(\d+)/$",views.BookViewDetail.as_view()), #方式二
url(r"^publish/$",views.PublishView.as_view()),
url(r"^publish/(\d+)/$",views.PublishView.as_view()), #方式三
url(r"^authors/$", views.AuthorsView.as_view()),
url(r"^authors/(\d+)/$", views.AuthorsViewDetail.as_view()), #方式四
url(r"^authors/$", views.AuthorsModelView.as_view({"get":"list","post":"create"})),
url(r"^authors/(?P<pk>\d+)/$", views.AuthorsModelView.as_view({"get":"retrieve","delete":"destroy","put":"update"})), ]

serializers

from app01.models import *
from rest_framework import serializers
class BookSerializer(serializers.ModelSerializer):
class Meta:
model =Book
fields="__all__" class PublishSerializer(serializers.ModelSerializer):
class Meta:
model=Publish
fields="__all__" class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model= Author
fields="__all__"

视图:

from django.shortcuts import render

# Create your views here.
###########################################BookView############################方式一
from rest_framework.views import APIView
from rest_framework.response import Response
from app01.models import Book,Author,Publish
from app01.serializer import BookSerializer,PublishSerializer,AuthorSerializer class BookView(APIView):
def get(self,request):
"""
查看所有书籍
:param request:
:return:
"""
book_list=Book.objects.all()
serializer= BookSerializer(book_list,many=True)
return Response(serializer.data) def post(self,request):
"""
添加一条书籍
:param request:
:return:
"""
serializer=BookSerializer(data=request.data,many=True)
if serializer.is_valid():
serializer.save()#create操作.
return Response(serializer.data)
else:
return Response(serializer.errors) class BookViewDetail(APIView):
def get(self,request,pk):
edit_book =Book.objects.get(pk=pk)
serializer =BookSerializer(edit_book,many=False)
return Response(serializer.data)
def put(self,request,pk):
edit_book=Book.objects.get(pk=pk)
serializer =BookSerializer(data=request.data,instance=edit_book)
if serializer.is_valid():
serializer.save()
return Response(serializer.data)
else:
return Response(serializer.errors)
def delelte(self,request,id):
edit_obj =Book.objects.get(pk=id).delete()
return Response("") ##################################PublishView#######################################方式二 from rest_framework import generics
from rest_framework.mixins import ListModelMixin,CreateModelMixin,UpdateModelMixin,DestroyModelMixin,RetrieveModelMixin class PublishView(ListModelMixin,CreateModelMixin,generics.GenericAPIView):
queryset = Publish.objects.all()
serializer_class = PublishSerializer def get(self,request,*args,**kwargs):
return self.list(request,*args,**kwargs) def post(self,request,*args,**kwargs):
return self.create(request,*args,**kwargs) class PublishViewDetail(UpdateModelMixin,DestroyModelMixin,RetrieveModelMixin,generics.GenericAPIView):
queryset = Publish.objects.all()
serializer_class = PublishSerializer def get(self,request,*args,**kwargs):
return self.retrieve(request,*args,**kwargs) def put(self,request,*args,**kwargs):
return self.update(request,*args,**kwargs) def delete(self,request,*args,**kwargs):
return self.destroy(request,*args,**kwargs) ##############################################AuthorView##################################方式三
class AuthorsView(generics.ListCreateAPIView):
queryset = Author.objects.all()
print(queryset)
serializer_class = AuthorSerializer
print(serializer_class) class AuthorsViewDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Author.objects.all()
print(queryset)
serializer_class = AuthorSerializer
print(serializer_class) #############################################AuthorView#ModelView###########################方式四 from rest_framework.viewsets import ModelViewSet class AuthorsModelView(ModelViewSet):
queryset = Author.objects.all()
serializer_class = AuthorSerializer

Restframework 视图组件与序列号组件的应用.的更多相关文章

  1. rest-framework框架——APIView和序列化组件

    一.快速实例 Quickstart http://www.cnblogs.com/yuanchenqi/articles/8719520.html restful协议 ---- 一切皆是资源,操作只是 ...

  2. 界面编程与视图(View)组件

    一.视图组件与容器组件 Android应用的绝大部分UI组件都放在android.widget包及其子包.android.view包及其子包中,Android应用的所有UI组件都继承了View类. V ...

  3. 视图属性+对象动画组件ViewPropertyObjectAnimator

    视图属性+对象动画组件ViewPropertyObjectAnimator   ViewPropertyObjectAnmator组件是一款对象动画(ObjectAnimator)封装组件.它将视图属 ...

  4. Django_Restframwork_序列号组件

     第一种序列化方式. 第二种方法通过Model_to_dict方法进行创建 第三种方式序列号组件Serializers: 第四种方法序列化 五.ModelSerializer组件. POST校验 PU ...

  5. 解析器组件和序列化组件(GET / POST 接口设计)

    前言 我们知道,Django无法处理 application/json 协议请求的数据,即,如果用户通application/json协议发送请求数据到达Django服务器,我们通过request.P ...

  6. JS组件系列——表格组件神器:bootstrap table

    前言:之前一直在忙着各种什么效果,殊不知最基础的Bootstrap Table用法都没有涉及,罪过,罪过.今天补起来吧.上午博主由零开始自己从头到尾使用了一遍Bootstrap Table ,遇到不少 ...

  7. JS组件系列——表格组件神器:bootstrap table(三:终结篇,最后的干货福利)

    前言:前面介绍了两篇关于bootstrap table的基础用法,这章我们继续来看看它比较常用的一些功能,来个终结篇吧,毛爷爷告诉我们做事要有始有终~~bootstrap table这东西要想所有功能 ...

  8. Vue父组件向子组件传递一个动态的值,子组件如何保持实时更新实时更新?

    原文:https://blog.csdn.net/zhouweixue_vivi/article/details/78550738 2017年11月16日 14:22:50 zhouweixue_vi ...

  9. DjangoRestFramework学习三之认证组件、权限组件、频率组件、url注册器、响应器、分页组件

    DjangoRestFramework学习三之认证组件.权限组件.频率组件.url注册器.响应器.分页组件   本节目录 一 认证组件 二 权限组件 三 频率组件 四 URL注册器 五 响应器 六 分 ...

随机推荐

  1. loadrunner11--集合点(Rendezvous )菜单是灰色不能点击

    新建场景的时候“Manual Scenario”下的check box不能选中,取消选中就好了.即Vuser不能以百分比的形式. 所以:集合点灰化有两种情况: 脚本没有添加集合点函数 场景中设置以Vu ...

  2. Java数据结构和算法(一)概念

    Java数据结构和算法(一)概念 数据结构与算法目录(https://www.cnblogs.com/binarylei/p/10115867.html) 一.逻辑结构 数据之间的相互关系称为逻辑结构 ...

  3. easyui datagrid编辑

    <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Datagrid.aspx. ...

  4. 动态加载页面 通过src

    <img src="a.jpg"> 通过js  改变 src 路径 如action  路径, 注意 action 配置问题.

  5. Linux编程规范

    1)在使用C语言进行编程时,源文件都必须加---文件头 /******************************************************** *文件名:test.c *创 ...

  6. Python自动化面试必备 之 你真明白装饰器么?

    Python自动化面试必备 之 你真明白装饰器么? 装饰器是程序开发中经常会用到的一个功能,用好了装饰器,开发效率如虎添翼,所以这也是Python面试中必问的问题,但对于好多小白来讲,这个功能 有点绕 ...

  7. 2018.06.30 BZOJ 2342: [Shoi2011]双倍回文(manacher)

    2342: [Shoi2011]双倍回文 Time Limit: 10 Sec Memory Limit: 128 MB Description Input 输入分为两行,第一行为一个整数,表示字符串 ...

  8. 2018.08.29 NOIP模拟 movie(状压dp/随机化贪心)

    [描述] 小石头喜欢看电影,选择有 N 部电影可供选择,每一部电影会在一天的不同时段播 放.他希望连续看 L 分钟的电影.因为电影院是他家开的,所以他可以在一部电影播放过程中任何时间进入或退出,当然他 ...

  9. arduino 中通过寄存器地址访问寄存器内容

    void call_func( void (*func)(void)){ (*func)(); } void setup() { // put your setup code here, to run ...

  10. python小练习--函数调用函数,让对象具有能动性

    class Box:#定义一个类名为Box,类名后不必有括号,类包含类属性和类方法,这个类没有定义类属性 '''这是一个计算体积的类'''#这是这个类的__doc__属性,执行类后就可以在交互界面输入 ...