案例:

实现过程:

  1. 创建一个项目:  

django-adim  startproject dfr3

  2.  创建 一个app    homwork

python manage.py startapp homework

  3. settings.py

必须注册 rest_framework 

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'rest_framework',
'homework',
]

连接数据库:

DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'book',
'HOST':'127.0.0.1',
'PORT':3306,
'USER':'root',
'PASSWORD':''
}
}

主应用  _init_.py 文件下:

import pymysql

pymysql.install_as_MySQLdb()

serilazers.py 文件中

from rest_framework import serializers

from homework.models import Province

class ProvinceModelSerilazers(serializers.ModelSerializer):

    class Meta:
model = Province
fields ='__all__' # 序列化器 2 只显示 id 和name 字段
class Province2ModelSerilazers(serializers.ModelSerializer): class Meta:
model = Province
fields =['id','name']

views.py

from rest_framework.decorators import action
from rest_framework.response import Response
from rest_framework.viewsets import ModelViewSet,ReadOnlyModelViewSet from .serilazers import ProvinceModelSerilazers,Province2ModelSerilazers
from .models import Province class ProvinceModelViewSet(ModelViewSet): queryset = Province.objects.all()
serializer_class = ProvinceModelSerilazers @action(methods=['get',],detail=False)
def get_gdp_top3(self,request):
'''查gdp前3的省份'''
# datas= Province.objects.all().order_by('-gdp')[:3]
# serializer = ProvinceModelSerilazers(instance=datas,many=True)
datas =self.get_queryset().order_by('-gdp')[:3]
serializer = self.get_serializer(instance=datas,many=True)
return Response(serializer.data) class ProvinceReadOnlyModelViewSet(ReadOnlyModelViewSet): queryset = Province.objects.all()
# serializer_class = ProvinceModelSerilazers def get_serializer_class(self): if self.action=='list': return Province2ModelSerilazers # 当获取所有页只返回两个字段
else:
return ProvinceModelSerilazers # 当获取详情页是返回所有字段

路由

1. homework 视图中 urls.py 路由

from django.urls import path,re_path

from rest_framework.routers import DefaultRouter
from homework import views
urlpatterns=[] router = DefaultRouter()
router.register('province',views.ProvinceModelViewSet)
router.register('prov',views.ProvinceReadOnlyModelViewSet) urlpatterns += router.urls

2、总路由

from django.contrib import admin
from django.urls import path,include urlpatterns = [
path('admin/', admin.site.urls),
path('hw/', include('homework.urls')),
]

drf 需求案例1的更多相关文章

  1. 三 drf 认证,权限,限流,过滤,排序,分页,异常处理,接口文档,集xadmin的使用

    因为接下来的功能中需要使用到登陆功能,所以我们使用django内置admin站点并创建一个管理员. python manage.py createsuperuser 创建管理员以后,访问admin站点 ...

  2. Samba共享目录的多用户权限设置案例

    下面根据实际工作中遇到的一个共享目录的多用户权限需求案例来说明下Samba用户权限的设置. 一.需求场景领导:李一(liyi)正式员工(zhengshiyuangong):刘二二(liuerer).于 ...

  3. Flume案例Ganglia监控

    Flume案例和Flume监控系统的使用: 安装 将apache-flume-1.7.0-bin.tar.gz上传到linux的/opt/software目录下 解压apache-flume-1.7. ...

  4. jmeter压测学习1-window环境准备与案例

    前言 最近用jmeter做一些接口的压力测试,记录下使用过程中遇到的一些问题. 在使用window机器做并发压测的时候,发现并发数设置100的时候,会出现报错:java.net.SocketExcep ...

  5. 30个关于Shell脚本的经典案例(上)

    对于初学者而言,因为没有实战经验,写不出来Shell脚本很正常,如果工作了几年的运维老年还是写不出来,那就是没主动找需求,缺乏练习,缺乏经验.针对以上问题,总结了30个生产环境中经典的Shell脚本, ...

  6. 巧用freemarker

    使用Freemarker宏进行可扩展式模块化编程 该文是转载而来,并非我本人所写,但是觉得真心不错,所以收藏一下 一.前言 今天的文章聊一下freemarker的一些特性:宏,我们将使用它写出一些模块 ...

  7. JavaIO之File类

    Java-IO之File类 Java-IO之File类 1. File类 1.1. File类说明 1.2. 体验 File 类 1.3. 构造一个 File 类实例: 1.4. 路径: 1.4.1. ...

  8. 如何在Vue2中实现组件props双向绑定

    Vue学习笔记-3 前言 Vue 2.x相比较Vue 1.x而言,升级变化除了实现了Virtual-Dom以外,给使用者最大不适就是移除的组件的props的双向绑定功能. 以往在Vue1.x中利用pr ...

  9. 使用Freemarker宏进行可扩展式模块化编程

    作者:Chu Lung 原文链接:http://blog.chulung.com/article/13 本文由MetaCLBlog于2016-07-08 14:42:10自动同步至cnblogs 一. ...

随机推荐

  1. Flutter学习指南:UI布局和控件

    Flutter学习指南:UI布局和控件 - IT程序猿  https://www.itcodemonkey.com/article/11041.html

  2. Windows使用(类)Unix环境那些事

    之前的博文中有不少涉及到win下使用unix环境的一些东西,但都是为了做别的事情,还是写一个专门讲这个主题的文章吧. 主角:Cygwin.mingw-W64.MSYS2. 注:mingw已经停止更新很 ...

  3. AtCoder Beginner Contest 117 解题报告

    果然abc都是手速场. 倒序开的qwq. D题因为忘记1e12二进制几位上界爆了一发. A - Entrance Examination 就是除一下就行了... 看样例猜题意系列. #include& ...

  4. C# winfrom 通过代码 删除TableLayoutPanel控件的一行或列

    tableLayoutPanel1.ColumnStyles.RemoveAt(1);                tableLayoutPanel1.Controls.RemoveAt(1);

  5. Shiro学习笔记(一)

    首先展示一下项目的结构目录 工程是用maven创建的   主要是方便管理Jar包  maven的  pom文件中所需要的jar包 <dependencies> <dependency ...

  6. kubernetes 实战5_命令_Assign Pods to Nodes&Configure a Pod to Use a ConfigMap

    Assign Pods to Nodes how to assign a Kubernetes Pod to a particular node in a Kubernetes cluster. Ad ...

  7. Installation Guide of Ubuntu 14.04, 64bit on Dell Server

    Installation Guide of Ubuntu 14.04, 64bit on Dell Server 准备:U盘(已通过ultraiso刻录ISO镜像). 1.插入U盘: 2.启动服务器, ...

  8. 解决Geoserver请求跨域的几种思路,第二种思路用过

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景描述 跨域问题是浏览器同源安全制引起的特别常见的问题.不同前端语 ...

  9. Python Scrapy安装

    直接安装scrapy 各种报错,后来各种百度终于解决了,如下是亲身的经历. pip install scrapy 这样直接会报错. 第一步: 先安装wheel pip install wheel 第二 ...

  10. Oracle Single-Row Functions(单行函数)——NULL-Related Functions

    参考资料:http://docs.oracle.com/database/122/SQLRF/Functions.htm#SQLRF006 Single-row functions return a ...