路飞学城项目:

1 Vue

2 restframework框架(一周)

3 学城项目(一周-两周)

day98

1 CBV(class based view) 与 FBV(function based view)
class LoginView(View):

def get(self,request):

return render(request,"login.html")

def post(self,request):
user=request.POST.get("user")
pwd=request.POST.get("pwd")

if 1:
return HttpResponse("OK")

url(r'^index/', views.index) # 用户一旦访问:index(request)

# url(r'^login/', views.LoginView.as_view()),
# url(r'^login/', View.as_view()),
# url(r'^login/', View.view),

# 用户一旦访问get请求login-----》

view(request):
return self.dispatch(request, *args, **kwargs)

dispatch(self, request, *args, **kwargs):

if request.method.lower() in self.http_method_names:
handler = getattr(self, request.method.lower())

return handler(request, *args, **kwargs)

RESTful:(面向资源架构(ROA:Resource Oriented Architecture))

1 一切皆资源
books books
book/add/ addbook
book/1/change changebook
book/1/delete changebook

restful:
get 查看
books ------------>
post 添加

get 查看
book/1/-------------
delete 删除
put 更新

2
GET :从服务器取出资源(一项或多项)
POST :在服务器新建一个资源
PUT :在服务器更新资源(客户端提供改变后的完整资源)
PATCH :在服务器更新资源(客户端提供改变的属性)
DELETE :从服务器删除资源

restframework框架:

(1) APIView (******)
class PublishView(APIView):

def get(self,request):
publish_list=Publish.objects.all()
ret=serialize("json",publish_list)

return HttpResponse(ret)

def post(self,request):
pass
#url(r'^publishes/', views.PublishView.as_view()),
#url(r'^publishes/', APIView.as_view()),
#url(r'^publishes/', View.view),

用户一旦访问get请求

View.view(request):
return self.dispatch(request, *args, **kwargs)
---- APIView.dispatch(request, *args, **kwargs):
源码

if request.method.lower() in self.http_method_names:
handler = getattr(self, request.method.lower())

response = handler(request, *args, **kwargs)
return response

(2) 序列化组件 (******)
将queryset序列化成json

Django序列化组件:
publish_list=Publish.objects.all()
ret=serialize("json",publish_list)

restframework的序列化组件

[obj1,obj2,...]--------> [{},{},{}]
obj--------------------> {}

# 自定义序列化组件
class BookSerializers(serializers.Serializer):
title=serializers.CharField()
price=serializers.CharField()
publishDate=serializers.DateField()

# 针对一对多
publish=serializers.CharField(source="publish.name")
publish_email=serializers.CharField(source="publish.email")
# 针对多对多
authors=serializers.SerializerMethodField()
def get_authors(self,obj):
data=[]
for i in obj.authors.all():
temp=[]
temp.append(i.pk)
temp.append(i.name)
data.append(temp)
return data
# ModelSerializer序列化组件
class BookSerializers(serializers.ModelSerializer):
class Meta:
model=Book
fields="__all__"

publish = serializers.CharField(source="publish.name")
authors=serializers.SerializerMethodField()
def get_authors(self,obj):
data=[]
for i in obj.authors.all():
temp=[]
temp.append(i.pk)
temp.append(i.name)
data.append(temp)
return data

1

"books" GET:获取所有数据
POST:添加一条数据

"book/1" GET:获取单条数据
DELETE:删除一条数据
PUT/PATCH:更新一条数据

2 功能之序列化:
book_list = Book.objects.all()
ps = BookSerializers(book_list, many=True)
ps.data

book_obj=Book.objects.filter(pk=pk).first()
bs=BookSerializers(book_obj,many=False)

3 校验字段与操作记录(ModelSerializer拥有)
# 添加数据
bs=BookSerializers(data=request.data)
if bs.is_valid(): #校验字段接口
bs.save() # 生成记录接口
return Response(bs.data) # 序列化接口

# 更新数据
bs=BookSerializers(data=request.data,instance=book_obj)
if bs.is_valid(): #校验字段接口
bs.save() #更新记录接口
return Response(bs.data) # 序列化接口

(3) 视图组件 (******)
(4) 解析器
(5) 认证组件
(6) 权限组件
(7) 频率组件
(8) 分页器
(9) 响应器
(10) url控制器
(11) 版本控制

restframework 的一些操作的更多相关文章

  1. 【Django】 rest-framework和RestfulAPI的设计

    [rest-framework] 这是一个基于django才能发挥作用的组件,专门用于构造API的. 说到API,之前在其他项目中我也做过一些小API,不过那些都是玩票性质,结构十分简单而且要求的设计 ...

  2. django restframework permission

    与 authentication 和 throttling 一起,permission 决定是应该接受还是拒绝访问请求.权限检查总是在视图的最开始处运行,在任何其他代码被允许进行之前.权限检查通常会使 ...

  3. rest-framework解析器,url控制,分页,响应器,渲染器,版本控制

    解析器 1.json解析器 发一个json格式的post请求.后台打印: request_data---> {'title': '北京折叠'} request.POST---> <Q ...

  4. rest-framework总结

    1. CBV: pass 2 .APIView class BookView(APIView):pass url(r'^books/$', views.BookView.as_view(),name= ...

  5. rest-framework序列化

    快速实例 Quickstart 序列化 开篇介绍: ---- 一切皆是资源,操作只是请求方式 ----book表增删改查 /books/ books /books/add/ addbook /book ...

  6. 一.rest-framework之版本控制 二、Django缓存 三、跨域问题 四、drf分页器 五、响应器 六、url控制器

    一.rest-framework之版本控制 1.作用 用于版本的控制 2.内置的版本控制 from rest_framework.versioning import QueryParameterVer ...

  7. RestFramework——API基本实现及dispatch基本源码剖析

    基于Django实现 在使用RestFramework之前我们先用Django自己实现以下API. API完全可以有我们基于Django自己开发,原理是给出一个接口(URL),前端向URL发送请求以获 ...

  8. RestFramework——API设计规范

    what's the RESTful RestFramework是一个能快速为我们提供API接口,方便我们编程的框架.API是后端编程人员写的,为了让前端拿数据的一个接口,通常就是以url的形式存在. ...

  9. REST-framework快速构建API--四部曲

    代码目录结构: 一.使用原生APIView 使用rest-framework原生的APIView实现过程: 以url(r'^books/$', views.BookView.as_view(),nam ...

随机推荐

  1. findall查找 ^$*+?{ }{m,n}[].[.] \w \s \d \b \D \W

    #!/usr/bin/env python import re r = "aasa da.5a5dfgfda ada" ret = re.findall('a',r) print( ...

  2. [bzoj2460] [BeiJing2011]元素(线性基+贪心)

    题目大意: 有一些矿石,每个矿石有一个a和一个b值,要求选出一些矿石,b的和最大且不存在某个矿石子集它们的a的异或和为0. 解题关键:对魔力进行由大到小排序,依次加入线性基,统计即可. #includ ...

  3. PAT-l3-002堆栈

    L3-002. 堆栈 大家都知道“堆栈”是一种“先进后出”的线性结构,基本操作有“入栈”(将新元素插入栈顶)和“出栈”(将栈顶元素的值返回并从堆栈中将其删除).现请你实现一种特殊的堆栈,它多了一种操作 ...

  4. Nginx 正向代理和反向代理

    正向代理的概念 正向代理,也就是传说中的代理,他的工作原理就像一个跳板,简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器这个代理服务器呢,他能访问那个我不能访问的网站于是我先连上代 ...

  5. 通过iOS中的按钮来触发html文件中按钮所触发的函数

    html文件的代码 <!DOCTYPE html> <html> <head> <title>标题</title> </head> ...

  6. ruby 类方法、实例方法、类变量

    ###################### #类变量 ###################### class Cloud @@count=0 def initialize(user,passwor ...

  7. 505C Mr. Kitayuta, the Treasure Hunter

    传送门 题目大意 一共有30000个位置,从第0个位置开始走,第一次走k步,对于每一次走步,可以走上一次的ki+1 ,ki ,ki-1步数(必须大于等于1),每个岛上有value,求最大能得到的val ...

  8. 如果客户端禁用了cookie,如何实现session

    虽然客户端禁用了cookie,那么当访问某一个php文件时,php会先查找php.ini,如果session.use_trans_sid=1/session.use_only_cookie=0,php ...

  9. Redis了解

    1. 使用Redis有哪些好处? (1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持string,li ...

  10. ipmitool查询服务器功耗

    通过ipmitool查看服务器功耗 ipmitool -H $ip -I lanplus -U $user -P $password sdr elist | grep "Pwr Consum ...