zoukankan      html  css  js  c++  java
  • web开发模式及drf的介绍等相关内容-82

    1 web应用
    -桌面应用(GUI),Tkinter,pyqt(qt平台) 单机版(文件,sqlite,mysql)
       -C/S架构:socket,Http
       -B/S架构:http协议
    2 Http协议:面试重点(请求头,响应头里有什么,http版本的区别)
    3 web框架:任何语言都会有自己web框架
    -java中:
      -jdk(java开发工具包,java开发必须装),jre(java运行环境,java程序运行),jvm(java虚拟机)
           -java:javaSE(基础),javaEE(web),javaME(移动开发,淘汰了)
           -ssh框架:spirng, structs,hibernate(orm框架)  war包
           -ssm框架:spring,springMVC,mybatis(orm框架,写原生sql) war包
           -springboot:类似于django,大而全,约定大于配置,默认集成了tomcat  jar包
           -springcloud:微服务,完整的微服务解决方案
       -go中:
      -go基础,web框架
           -Beego(中国人,大而全),gin(大学生,偏多,小而精flask),Iris,Echo,Revel
       -python中:
      -Django:MTV(mvc)
           -flask(小而精)
           -tornado(逐渐下滑)
           -sanci(逐步上升,不支持windows,异步版本flask)
           -fastapi(异步版本flask)
           
    4 django开发之路
    -安装,创建项目,启动,配置,目录结构
       -MTV架构
       -路由urls.py
      -url,path,re_path
           -有名无名分组,路由分发,名称空间
           -转换器,自定义转换器
       -视图Viwes.py
      -请求对象(http的请求)
           -响应对象(http响应)
          -四件套
           -cbv和fbv
           -文件上传(编码方式)
       -模板层Templages文件夹
      -模板语言(DTL)
      -xx.html (字符串替换)
           -变量,变量深度查询
           -标签
           -过滤器
           -自定义标签,过滤器
           -render()--->页面静态化
       -模型层
      -orm:能创建表,新增删除字段,不能创建数据库
      -单表
           -数据库连接(mysql)
           -创建表模型(字段,字段参数)
           -多表
          -三个关系
           -Meta:表名,联合索引,联合唯一,排序
           -查询方法:api
           -单表的__模糊查询
           -多表的__连表查询
           -多表基于对象的跨表查询
           -聚合
           -分组
           -F和Q
       -高级部分
      -ajax(js的,jq的ajax方法,axios),异步,上传文件,json格式(django内置的序列化器)
           -分页器
           -forms:数据校验和模板渲染,局部,全局钩子函数(源码分析)
           -cookie和session,token,django中如何操作cookie,session
           -中间件:最重要的两个
           -Auth:django内置app,用户相关
      -BBS项目(前后端混合开发)
    -django 2.0.7+mysql5.6+bootstrap3.x
      -8张表
           -注册功能:form渲染,头像实时显示,ajax提交数据,ajax渲染错误信息(js的dom操作)
           -登录功能:ajax提交,手写验证码(现成模块,滑动验证码:集成第三方)
           -首页:样式,是否登录显示不同,文章渲染(模板语言:for),分页器
           -个人站点:文章渲染,左侧栏:样式,inclusion_tag,过滤(url设计),三个分组查询
           -文章详情页:母版继承,safe(xss攻击),
           -点赞点踩:样式,ajax提交,事务
           -评论:根评论,子评论,前端:es6字符串格式化语法`${变量名}`,render渲染,ajax渲染,
           -后台管理:文章展示,修改,删除
           -文章新增:富文本编辑器,xss攻击处理
           -密码修改
           -头像修改
           -文章修改
           -django发送邮件
           

    1 drf内容概况

    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 Vue:前端js框架
    3 前后端分离项目:路飞学城

    2 web开发模式

    1 前后端混合开发(模板语言:DTL),处理很多前端问题
    2 前后端分离:前端是一个项目,后端是一个项目,联调
    -全栈开发
    3 前端:不仅仅指 web前端,移动端,小程序
    -web:vue,react,html+css+jq
       -移动端:ios(object c,swift),安卓(java,Kotlin)
       -小程序:微信自己把js,html,css,封装了一些
       
       -发展到现在:大前端概念
      -flutter:Dart
           -uni-app:vue框架
               
    4 后端只需要返回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.7 ,1版本也可以
       djangorestframework:3.12.1

    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

     

     

  • 相关阅读:
    python学习之列表
    python学习之数据类型
    开启python学习之路
    软件工程中的需求分析包括的主要内容
    论需求分析和数据库设计的重要性
    Android的ListView分页功能(上滑加载更多)
    设置ListView显示到最后一行
    一对一Socket简单聊天的实现
    Spring Cloud学习笔记-004
    Spring Cloud学习笔记-003
  • 原文地址:https://www.cnblogs.com/usherwang/p/14234973.html
Copyright © 2011-2022 走看看