drf学习

html复习

常用标签
html head body
div span
br hr a img
i b u h1~h6 p
ul>li  table>(caption)thead|tbody|tfoot>tr>th|td  form>input|label|textarea|select>option

css复习

选择器:
基础:*  div  .div   #div  !important
群组:div,h1,a {}
后代子代:body div | body > div
兄弟相邻:.d1~.d2  | .d1+.d2
交叉选择器:.d1.d2  |  div.d1  div.d1#d.d2   <div class="d1 d2"  id="d"> 
属性选择器:[titile]
伪类选择器::hover  :active  :focus  :blur  :change  :checked
		  :after{content:""}  :before{content:""}
		  :nth-child()  :nth-of-type()

drf学习

"""
drf:django-restframework
drf框架的作用:写接口

什么是接口: 
	明确了请求方式,提供对应后台所需参数,请求url链接可以得到后台的响应数据
	
怎么写接口:
	参照某种规则(规范)书写url链接,同时根据规则制定请求方式,请求数据与响应结果
	
接口文档:
	提供给前后台开发人员与测试人员查看

接口规范:
	webapi接口规范:restful 
"""
https://api.oldboy.com/v2/books/?limit=3&ordering=-price&page=2
https://api.oldboy.com/v2/books/(pk)/

# 网络状态码:200
{
    "status": 0,
    "msg": "ok",
    "results": [
        {
            "name": "西游记",
            "img": "https://api.oldboy.com/media/img/xyj.png"
        }
    ]
}

知识点总结

"""
1、html常用标签
2、css选择器,css三种布局
3、js四种变量,js字符串、数组、对象的操作方法,js可变长参数
4、接口的四个核心部分:请求方式,请求地址,请求参数,响应结果
5、接口工具:写接口文档的YApi平台,访问接口的Postman工具
6、restful接口规范:如何设计url,请求方式代表操作方式,网络状态码及其含义,响应结果
7、基于原生django书写满足restful规范的接口:两个url 对应 一个视图类 完成 十大接口
8、CBV请求生命周期:as_view()完成路由匹配 => url请求会调用as_view()的返回值视图函数view => 调用dispatch()完成请求分发 => 视图类的具体视图方法处理请求 => 返回给前台

9.
	安装drf:pip install djangorestframework
	视图类继承drf的APIView: from rest_framework.views import APIView
	读懂drf的as_view()方法:返回视图函数view是,局部禁用了csrf认证 - csrf_exempt(view)
	请求分发的dispatch(),
		在分发执行视图方法前,完成了
			二次封装request:self.initialize_request(request, *args, **kwargs)
			三大认证:self.initial(request, *args, **kwargs)
		在视图方法处理完请求后:
			出现异常的处理:self.handle_exception(exc)
			二次封装response:self.finalize_response(request, response, *args, **kwargs)
			
10、自己看drf源码入口:直接查看 rest_framework.view的APIView的dispatch方法
"""

drf全局渲染与局部渲染

  • 局部设置

    • 在我们定义基础APIView的类添加renderer_classes = [JSONRenderer]这样网页就不会出现渲染只显示js数据

    例如

    class UserAPIView(APIView):
      renderer_classes = [JSONRenderer]
    
        def get(self, request, *args, **kwargs):
            print(request.query_params)
            data = {
                'status': 0,
                'msg': 'get ok',
                'results': [],
                'token': '123.12321.231'
            }
            return Response(
                data=data,
                status=status.HTTP_200_OK,
                headers={'Token': '123as.masd21.asd213sd'},
                content_type='application/json'  # 默认就是application/json
            )
    
  • 全局设置在setting

    # drf配置
    REST_FRAMEWORK = {
        # 响应的渲染模块
        'DEFAULT_RENDERER_CLASSES': [
            'rest_framework.renderers.JSONRenderer',
            'rest_framework.renderers.BrowsableAPIRenderer',
        ],
        'DEFAULT_PARSER_CLASSES': [
            'rest_framework.parsers.JSONParser',  # 'application/json'
            'rest_framework.parsers.FormParser',  # 'application/x-www-form-urlencoded'
            'rest_framework.parsers.MultiPartParser'  # multipart/form-data
        ],
    }
    
原文地址:https://www.cnblogs.com/aden668/p/11884288.html