djangorestframework

 

一 安装djangorestframework

二 djangorestframework的APIView流程分析

三 djangorestframework的request分析

 

一 安装djangorestframework

基于 djangorestframework写API,用这个写接口view函数用CBV

方式一:pip3 install djangorestframework

方式二:pycharm图形化界面安装

方式三:pycharm命令行下安装(装在当前工程所用的解释器下)

 

二 djangorestframework的APIView流程分析

请求来的时候先通过restframework先检测,封装,内部有权限,频率,和认证

request是被djangorestframework封装过了

 

三 djangorestframework的request分析

重写了元类的方法:

__getattr__  拦截点号运算,如果没有属性,并且没有__getattr__则会报错,如果有此方法(异常处理)就不会报错,没有的属性走到这个方法里,返回指定的值

__setattr__  赋值运算的时候,会走到这个方法里

 

路由层

from django.conf.urls import url
from django.contrib import admin
from api import views
urlpatterns = [
    url(r'^admin/', admin.site.urls),
    # url(r'^book/', views.book),
    url(r'^book/', views.Book.as_view()),
]

 

视图层

from django.shortcuts import render,HttpResponse
# Create your views here.
import json
from api import models

# 用APIView 写API
from rest_framework.views import  APIView

class Book(APIView):
    def get(self,request):
     # 前台不管是那种格式(json,urlencode)传过来的数据都转成了字典放在了 request.data里
     # 以后这种API,从前台传过来的数据都从request.data里取值,以前都是从request.body里取值
# request.data ret=models.Book.objects.all().values('title') print(ret) ll=list(ret) return HttpResponse(json.dumps(ll)) def post(self,request):
     # 前台如果是json传过来就是字典格式,如果是urlencoded格式传过来就是queryset格式 request.data里可以取到值 request.body里没值
print(request.data) #有值 print(request.POST) #没值 return HttpResponse('ok')

 

posted @ 2018-10-11 19:28  xujinjin  阅读(183)  评论(0编辑  收藏  举报