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. maven的下载

    1.maven的下载地址:http://maven.apache.org/download.cgi.下载3.3.9版本(在选择下载的版本是要与JDK契合). 2.下载之后,解压的文件放的位置尽量不要有 ...

  2. winform弹出文件和目录选择框

    目录选择: FolderBrowserDialog dialog = new FolderBrowserDialog(); dialog.Description = "请选择文件路径&quo ...

  3. 在Jmeter中用JAVA获取Rolling Date

    Rolling Date_Weekly import java.util.*; import java.text.SimpleDateFormat; import java.text.DateForm ...

  4. maven使用感受

    第一次接触的时候,什么都不懂,感觉好复杂. 后来系统地看了一个使用教程: 简单评价一下: 自动帮我们下载jar架包,还有就是可以执行命令自己部署到远程服务器上面去. 缺点: 学习成本.一般人不了解.第 ...

  5. HTML5 history详解

    最近研究vue-router单页转跳而不向服务器请求的原理, 主要是HTML5 history以及hash的应用,支持history时使用history模式 下面详细学习了一下常用的history相关 ...

  6. 最近学习工作流 推荐一个activiti 的教程文档

    全文地址:http://www.mossle.com/docs/activiti/ Activiti 5.15 用户手册 Table of Contents 1. 简介 协议 下载 源码 必要的软件 ...

  7. 通过程序修改注册表键值来达到修改IE配置参数的目的

    通过程序修改注册表键值来达到修改IE配置参数的目的 使用IE访问应用程序或网页时经常需要设置一些选项(工具-Internet 选项),比如为了避免缓存网页,把工具-Internet选项-常规选项卡-I ...

  8. 《Delphi XE6 android 编程入门教程》推荐

    近5.6年已经没有看见关于delphi的新技术的书出来了(看来在国内delphi的使用量确实很低了), 高勇同学最近出了一本<Delphi XE6 android 编程入门教程>,上周刚拿 ...

  9. 在delphi XE5 里面编译kbmmw4.3

    Delphi XE5 仓促的发布了,虽然开始支持Android 开发了,但是经过试用,发现那个模拟器慢到无法用, 真机可以运行,但是调试也几乎无法用.由于XE5 的主要增加的是Android 的开发支 ...

  10. METAGENOMIC SEQUENCING ANALYSIS WORKFLOW

    Metagenomics is defined as the study of the metagenome, which is total genomic DNA from environmenta ...