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
### Django REST Framework (DRF) 的基本介绍 Django REST framework(简称 DRF)是一个功能强大的工具集,用于构建基于 Web 的 API。它是 Django 框架的一个扩展应用程序,允许开发者快速设计符合 RESTful 规范的接口[^1]。由于其灵活性和易用性,DRF 成为了许多项目中实现 RESTful 接口的首选解决方案。 #### 安装与配置 要使用 DRF,首先需要通过 `pip` 进行安装: ```bash pip install djangorestframework ``` 接着,在项目的 `settings.py` 文件中的 `INSTALLED_APPS` 列表中添加 `'rest_framework'` 来启用该应用[^3]。 --- ### 核心功能 以下是 DRF 提供的核心功能及其作用: #### 1. **序列化与反序列化** DRF 提供了一套灵活的序列化机制,可以轻松地将复杂的 Python 数据类型转换为 JSON 或其他格式的数据,并支持数据验证和反序列化操作。这使得处理数据库模型和其他复杂对象变得简单高效[^3]。 #### 2. **视图与路由** DRF 支持多种类型的视图类,例如函数式视图、通用视图以及基于类的视图(如 `APIView` 和 `ViewSet`)。这些视图为开发者提供了极大的便利来定义不同的请求方法(GET、POST 等)的行为。此外,DRF 配合 Django 的 URL 路由系统,可以通过简单的声明式语法完成复杂的路径匹配[^4]。 示例代码如下: ```python from rest_framework.views import APIView from rest_framework.response import Response class ExampleView(APIView): def get(self, request): data = {"message": "This is a GET response"} return Response(data) def post(self, request): origin_data = request.data processed_data = {"received": origin_data} return Response(processed_data) ``` #### 3. **认证与权限管理** DRF 内置了丰富的认证方案,包括会话认证、Token 认证、OAuth 等,满足不同场景下的安全需求。同时,它也提供了细粒度的权限控制能力,可以根据用户的角色或状态动态调整访问策略[^2]。 #### 4. **分页** 对于大规模数据查询,DRF 自带分页功能,可帮助减少单次响应的数据量并提高性能。默认情况下支持标准分页样式,同时也允许自定义分页逻辑[^2]。 #### 5. **限流与过滤** 尽管限流和过滤的功能在实际开发中可能不如其他特性常用,但它们仍然是非常重要的部分。DRF 可以设置每秒最大请求数限制,防止恶意攻击;另外还可以集成第三方库实现高级筛选条件[^2]。 #### 6. **文档生成** 借助于 Swagger/OpenAPI 工具链或者内置浏览器界面,DRF 能够自动生产交互式的 API 文档,方便前端工程师理解后端服务接口的设计[^1]。 --- ### 总结 综上所述,Django REST framework 不仅继承了 Django 的强大生态体系,而且针对现代互联网应用的特点进行了优化增强,从而成为构建高性能 RESTful API 的理想选择之一。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值