Python知识点之PythonWeb开发(python进行web开发)
off999 2024-11-08 12:53 25 浏览 0 评论
1.什么是Flask?有什么优点?
Flask是一个Web框架,就是提供一个工具,库和技术来允许你构建一个Web应用程序。这个Web应用程序可以是一些Web页面,博客,wiki,基于Web的日里应用或商业网站。
Flask属于微框架(micro-framework)这一类别,微架构通常是很小的不依赖外部库的框架。其优点如下:
框架很轻量
更新时依赖小
专注于安全方面的bug
2.Django和Flask有什么区别?
Flask
轻量级web框架,默认依赖两个外部库:jinja2和Werkzeug WSGI工具
适用于做小型网站以及web服务的API,开发大型网站无压力,但架构需要自己设计
与关系型数据库的结合不弱于Django,而与非关系型数据库的结合远远优于Django
Django
重量级web框架,功能齐全,提供一站式解决的思路,能让开发者不用在选择上花费大量时间。
自带ORM(Object-Relational Mapping 对象关系映射)和模板引擎,支持jinja等非官方模板引擎。
自带ORM使Django和关系型数据库耦合度高,如果要使用非关系型数据库,需要使用第三方库
自带数据库管理app
成熟,稳定,开发效率高,相对于Flask,Django的整体封闭性比较好,适合做企业级网站的开发。
python web框架的先驱,第三方库丰富
3.Flask-WTF是什么,有什么特点?
Flask-wtf是一个用于表单处理、校验并提供CSRF验证的功能的扩展库
Flask-wtf能把正表单免受CSRF<跨站请求伪造>的攻击
4.Flask脚本的常用方式是什么?
在shell中运行脚本文件
在python编译器中run
5.如何在Flask中访问会话?
会话(seesion)会话数据存储在服务器上。 会话是客户端登录到服务器并注销的时间间隔。
需要在此会话中进行的数据存储在服务器上的临时目录中。
from flask import session导入会话对象
session['name'] = 'admin'给会话添加变量
session.pop('username', None)删除会话的变量
6.解释Python Flask中的数据库连接?
python中的数据库连接有2种方式
1)在脚本中以用第三方库正常连接,用sql语句正常操作数据库,如mysql关系型数据库的pymsql库
2)用ORM来进行数据库连接,flask中典型的flask_sqlalchemy,已面向对象的方式进行数据库的连接与操作
7.Flask框架有哪些依赖组件?
Route(路由)
templates(模板)
Models(orm模型)
blueprint(蓝图)
Jinja2模板引擎
8.Flask蓝图的作用?
蓝图Blueprint实现模块化的应用
book_bp = Blueprint('book', name)创建蓝图对象
蓝图中使用路由@book_bp.route('url')
在另一.py文件里导入和注册蓝图from book import book_bp app.register_blueprint(book_bp)
作用
将不同的功能模块化
构建大型应用
优化项目结构
增强可读性,易于维护(跟Django的view功能相似)
9.列举使用过的Flask第三方组件?
flask_bootstrap
flask-WTF
flask_sqlalchemy
10. 简述Flask上下文管理流程?
每次有请求过来的时候,flask 会先创建当前线程或者进程需要处理的两个重要上下文对象,把它们保存到隔离的栈里面,这样视图函数进行处理的时候就能直接从栈上获取这些信息。
11.Flask框架默认session处理机制?
Flask的默认session利用了Werkzeug的SecureCookie,把信息做序列化(pickle)后编码(base64),放到cookie里了。
过期时间是通过cookie的过期时间实现的。
为了防止cookie内容被篡改,session会自动打上一个叫session的hash串,这个串是经过session内容、SECRET_KEY计算出来的,看得出,这种设计虽然不能保证session里的内容不泄露,但至少防止了不被篡改。
12.django请求的生命周期?
1.wsgi,请求封装后交给web框架
2.中间件,对请求进行校验或者在请求对象中添加其他相关数据,
3.路由匹配,根据浏览器发送的不同url去匹配不同的视图函数
4.视图函数,在视图函数中进行业务逻辑的处理
5.中间件,对响应的数据进行处理
6.wsgi,将响应的内容发送给浏览器
13.列举django中间件的5个方法?以及django中间件的应用场景?
1.process_request
接收到客户端信息后立即执行,视图函数之前
2.process_response
返回到客户端信息前最后执行,视图函数之后
3.process_view
拿到视图函数的名称,参数,执行process_view()方法
4.process_exception
视图函数出错时执行
5.process_template_response
在视图函数执行完后立即执行,前提是视图返回的对象中有一个render()方法
14.django restframework框架中都有那些组件?
1.序列化组件:serializers 对queryset序列化以及对请求数据格式校验
2.路由组件routers 进行路由分发
3.视图组件ModelViewSet 帮助开发者提供了一些类,并在类中提供了多个方法
4.认证组件 写一个类并注册到认证类(authentication_classes),在类的的authticate方法中编写认证逻
5.权限组件 写一个类并注册到权限类(permission_classes),在类的的has_permission方法中编写认证逻辑。
6.频率限制 写一个类并注册到频率类(throttle_classes),在类的的allow_request/wait 方法中编写认证逻辑
7.解析器 选择对数据解析的类,在解析器类中注册(parser_classes)
8.渲染器 定义数据如何渲染到到页面上,在渲染器类中注册(renderer_classes)
9.分页 对获取到的数据进行分页处理, pagination_class
10.版本 版本控制用来在不同的客户端使用不同的行为
在url中设置version参数,用户请求时候传入参数。在request.version中获取版本,根据版本不同 做不同处理
15.django restframework如何实现的用户访问频率控制?
from rest_framework.throttling import SimpleRateThrottle
这里使用的节流类是继承了SimplePateThrottle类,而这个类利用了django内置的缓存来存储访问记录。通过全局节流设置,所有的视图类默认是使用UserThrottle类进行节流,如果不想使用默认的类就自定义给throttle_classes属性变量赋值,如:“throttle_classes =[VisitThrottle,]”。
16.django中如何实现单元测试?
django的单元测试使用python的unittest模块,这个模块使用基于类的方法来定义测试。
17.django-debug-toolbar的作用?
用来调试请求的接口
18.什么是wsgi?
WSGI是Python在处理HTTP请求时,规定的一种处理方式。如一个HTTP Request过来了,那么就有一个相应的处理函数来进行处理和返回结果。WSGI就是规定这个处理函数的参数长啥样的,它的返回结果是长啥样的?至于该处理函数的名子和处理逻辑是啥样的,那无所谓。
简单而言,WSGI就是规定了处理函数的输入和输出格式。
19.简述什么是FBV和CBV?
FBV和CBV本质是一样的,基于函数的视图叫做FBV,基于类的视图叫做CBV。
在python中使用CBV的优点:
提高了代码的复用性,可以使用面向对象的技术,比如Mixin(多继承)。
可以用不同的函数针对不同的HTTP方法处理,而不是通过很多if判断,提高代码可读性。
20.django中csrf的实现机制
第一步:django第一次响应来自某个客户端的请求时,后端随机产生一个token值,把这个token保存在SESSION状态中;同时,后端把这个token放到cookie中交给前端页面;
第二步:下次前端需要发起请求(比如发帖)的时候把这个token值加入到请求数据或者头信息中,一起传给后端;Cookies:{csrftoken:xxxxx}
第三步:后端校验前端请求带过来的token和SESSION里的token是否一致。
21.Django本身提供了runserver,为什么不能用来部署?(runserver与uWSGI的区别)
1)runserver方法是调试 Django 时经常用到的运行方式,它使用Django自带的WSGI Server 运行,主要在测试和开发中使用,并且 runserver 开启的方式也是单进程 。
2)uWSGI是一个Web服务器,它实现了WSGI协议、uwsgi、http 等协议。注意uwsgi是一种通信协议,而uWSGI是实现uwsgi协议和WSGI协议的 Web 服务器。uWSGI具有超快的性能、低内存占用和多app管理等优点,并且搭配着Nginx就是一个生产环境了,能够将用户访问请求与应用 app 隔离开,实现真正的部署 。相比来讲,支持的并发量更高,方便管理多进程,发挥多核的优势,提升性能。
22.Django如何实现websocket?
django实现websocket官方推荐大家使用channels。channels通过升级http协议来升级到websocket协议。保证实时通讯。也就是说,我们完全可以用channels实现我们的即时通讯。而不是使用长轮询和计时器方式来保证伪实时通讯。他通过改造django框架,使django既支持http协议又支持websocket协议。
相关推荐
- 图片文字修改神器免费(手机无痕修改图片文字软件)
-
首先区分是完整图片导入还是ai软件自己编写的文字,如果导入的图片无法修改,只能像ps一样去修图,如果是软件编写的,无法选取先要解锁,方法:上面任务栏对象-选择全部解锁。然后修改。修改方法:如果对方编组...
- 开户最忌三个证券公司(随便哪个证券公司开户都一样吗)
-
在不同的证券公司开户,确实存在一些区别。首先,不同的证券公司提供的交易品种和交易费用可能不同,有些公司可能提供更广泛的投资选择,而有些公司则可能提供更低的佣金率,这直接影响到您的投资成本和收益。其次,...
- 农行手机银行app下载(中国农业银行App下载)
-
自己下载的农行手机银行是能转账的,只是额度可能会要低一些,比如一类卡,在农行网点注册下载并开通手机银行,一天转账的额度是有十万,而自己下载注册开通的手机银行额度则只有5万,自己是可以下载农行手机银行是...
- 下载本机手机管家(手机管家华为专用版下载)
-
可以在手机的应用商店中下载就可以了你看看有没有办法把他弄到桌面上,比如刷新桌面,如果影响使用的话,建议恢复出厂设置吧,我以前也出现过这种情况,刷机之后就好了电脑管家目前是不支持手机终端登录的所以无法...
- 广州疫情最新消息(广州疫情最新消息通知)
-
当然可以,深圳去广州的交通发达也便捷,可以乘坐大巴车、火车、高铁、自驾车均可到达广州的各大客运站、火车站、城市地标,到站后还可以乘坐公交车、地铁、打车到你想去的目的地。 深圳...
- 大型网络游戏排行榜前十(目前大型网络游戏排行)
-
最热门的有很多的,每个人的标准都不一样的,但是只要自己喜欢就好,无有传齐所有职业都有四个被动技能,游侠的四个技能分别是:游猎者、梦魇、鹰眼术和原动力。作用分别是对减速单位额外造成伤害,暴击是额外提高伤...
- 苹果15(苹果15pro)
-
1、屏幕机身方面:iPhone15配有黑色、白色、红色、绿色、蓝色五款颜色,配备6.1英寸超视网膜XDR显示屏,支持HDR显示、原彩显示、广色域(P3)、2000000:1对比度(典型)...
- 迅雷浏览器官方下载(迅雷浏览器安卓下载)
-
可以下载浏览器。你用迅雷下载浏览器之后下载完成之后你去打开打开他就让你安装,安装之后就可以了那么浏览器的应用你就可以直接的用用,所以用新人下载浏览器这个是可以的,不会出现什么问题,下载浏览器也是比较快...
- 硬盘坏道修复工具(硬盘坏道修复太慢了)
-
1、victoria是一款基于Windows操作系统的用于电脑硬盘检测和维护的工具软件,具备硬盘表面检测、硬盘坏道修复、smart信息察看保存、cache缓存控制等多功能的工具,支持众多型号硬盘解密,...
- 中国驾驶模拟器(驾驶模拟中国地图游戏手机版)
-
是的,驾驶模拟器对学车非常有用。1、提供更安全的学习环境:在驾驶模拟器中,学员可以练习各种驾驶技巧,如转向、加减速、并线等,而无需担心与其他车辆或行人的碰撞,从而大大降低了驾驶练习的风险。2、增强学习...
- cad2018安装包下载(cad2018软件安装包)
-
点击软件安装包,鼠标右击选择解压到CAD_2019_64bit打开解压的文件夹在双击AutoCAD_2019_Simplified_Chinese_Win_64bit_dlm.sfx点击确定(软件安...
- conservative(conservative翻译)
-
conservative是贬义词。作形容词使用意思是保守的;守旧的;(英国)保守党的;低于实际数量的;作名词使用意思是(英国)保守党党员,保守党支持者;保守者;因循守旧者;例句Atleast50...
- 什么杀毒软件安全可靠(什么杀毒软件安全可靠性高)
-
肯定是360啊,虽然金山是老牌的杀毒软件公司,但是我觉得金山的体验做得确实一般,收费的时候市场份额很大,但是被360免费之后,360找到自己免费的盈利方式,一直更新迭代功能,不断的加强完善,技术投入力...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
失业程序员复习python笔记——条件与循环
-
系统u盘安装(win11系统u盘安装)
-
Python 批量卸载关联包 pip-autoremove
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
