145 BBS项目回顾 drf介绍

BBS项目回顾

(bbs项目后期上传)

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 前后端分离项目:路飞学城a

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
DRF(Django REST framework)是一个强大的Web API框架,它基于Django提供了一套用于构建和管理Web APIs的工具和库。实现前后端分离的项目原理可以通过以下步骤来说明: 1. 前端开发:前端开发人员使用HTML、CSS和JavaScript等技术创建用户界面,通过AJAX或其他方式与后端API进行通信。 2. 后端API设计:后端开发人员使用DRF创建API视图和模型,并定义API路由和序列化器等。DRF提供了一套简单且灵活的方式来定义和管理API。 3. 数据传输:前端通过HTTP请求向后端API发送请求,并接收返回的JSON或其他格式的数据。DRF提供了方便的请求处理和响应生成功能。 4. 认证和权限控制:DRF支持各种认证机制(如基于Token、JWT等),可以用于验证和授权API请求。开发人员可以根据项目需求配置适当的认证方式,并实施权限控制。 5. 数据处理和验证:DRF提供了强大的序列化器来处理数据的序列化和反序列化。开发人员可以根据数据模型定义序列化器,以便在API请求和响应中对数据进行处理和验证。 6. URL路由:DRF允许开发人员定义API路由,将URL与相应的API视图关联起来。这样,前端可以通过URL访问API的不同端点。 7. API文档和测试:DRF提供了自动生成API文档的功能,并支持API测试。开发人员可以使用DRF自动生成的文档来说明API的使用方法,并使用DRF的测试框架进行API的单元测试和集成测试。 通过以上步骤,前后端分离的项目可以实现灵活的API设计、数据传输和权限控制等功能,实现前后端之间的解耦和协作。同时,DRF提供了丰富的功能和扩展性,使得开发人员能够轻松构建和管理复杂的Web APIs。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值