day82drf入门规范

1、drf内容概况

1.1 django-rest-framework:drf,是一个app

​ 1-drf-drf入门规范

​ 2-drf-序列化组件

​ 3-drf-请求与响应

​ 4-drf-视图组件

​ 5-drf-路由组件

​ 6-drf-认证权限频率

​ 7-drf-过滤排序分页异常处理

​ 8-drf-自动生成接口文档

​ 9-drf-JWT认证:token

​ 10-drf-Xadmin的使用:第三方写的,比admin好看的后台管理

​ 11-Book系列多表群操作

​ 12-RBAC-基于角色的访问控制

​ django缓存,信号,跨域(cors:跨域资源共享)

2、web开发模式

2.1、前后端混合开发

模板语言是DTL,处理很多前端问题

2.2、前后端分离

前端是一个项目,后端是一个项目,前后端都写完后,要进行联调

前端:不仅仅指web前端,移动端和小程序

-web:Vue,react,HTML+css+jq

-移动端:iOS(object c,swift(很少用)),安卓(Java,kotlin)

-小程序:微信自己把js,html,css封装一些

发展到现在:大前端概念

-flutter:Dart

-uni-app:Vue框架

后端

后端只需要返回json格式字符串即可

3、api接口

1 /books/--->返回json格式数据--->/books/就是一个api接口
2 开放的api接口
	-微博
    -百度
    
3 api文档(前端开放看的)

4 典型的api接口
	-https://api.weibo.com/2/statuses/home_timeline.json

4、 postman的使用

1 后端开放完,使用postman测试接口(api接口)
2 使用postman导出和导入测试接口(自己回去试一下)
3 公司测试平台

5、drf的安装和使用

1 djangorestframework:django的app,只能再django上使用
2 pip3 install djangorestframework
3 简单使用,看代码
	django: 2.0.71版本也可以
    djangorestframework:3.12.1

代码如下:

视图函数:

from rest_framework.response import Response
from rest_framework.views import APIView
from django.views import View
from django.http import JsonResponse

class MyView2(View):
    def get(self,request):
        return JsonResponse({'name':'lqz','age':18})

class MyView(APIView):
    def get(self,request):
        print(type(request))
        return Response({'name': 'lqz', 'age': 18})

路由配置

urlpatterns = [
    path('admin/', admin.site.urls),
    path('drf/', views.MyView.as_view()),
    path('raw/',  views.MyView2.as_view()),
    ]

settings配置

import os
INSTALLED_APPS = [

    'rest_framework'
]

6、cbv源码回顾

# drf:APIView的源码分析

    def as_view(cls, **initkwargs):
        # 这句话执行完成返回 view闭包函数的内存地址
        view = super().as_view(**initkwargs) # 调用父类(View)的as_view
        view.cls = cls
        view.initkwargs = initkwargs
        view=csrf_exempt(view)  # 局部禁用csrf
        return view

 # 装饰器的使用方式
@csrf_exempt   ====>view=csrf_exempt(view)
def view():
    pass

# 请求来了,会执行上面返回的view()---->self.dispatch(APIView的dispatch)


# APIView的dispatch方法
    def dispatch(self, request, *args, **kwargs):
		# 把原生的request,封装进新的Request对象(drf的Request)
        request = self.initialize_request(request, *args, **kwargs)
        self.request = request
 

        try:
        	# 重点(频率,认证,权限。。。)
            self.initial(request, *args, **kwargs)

            if request.method.lower() in self.http_method_names:
                handler = getattr(self, request.method.lower(),
                                  self.http_method_not_allowed)
            else:
                handler = self.http_method_not_allowed
			# 这个request新的requst,是drf中Request对象
            # response是原生response
            response = handler(request, *args, **kwargs)

        except Exception as exc:
            # 全局异常
            response = self.handle_exception(exc)
		# 把原生response包装了一下
        self.response = self.finalize_response(request, response, *args, **kwargs)
        return self.response
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值