2023年7月20日发(作者:)
pythonflask⾯试题_Flask⾯试题什么是Flask,有什么优点?轻量级web框架,默认依赖两个外部库:jinja2和Werkzeug WSGI⼯具适⽤于做⼩型⽹站以及web服务的API如何在Flask中访问会话?会话(seesion)会话数据存储在服务器上,需要存储在服务器上的临时⽬录中from flask import session导⼊会话对象session['name'] = 'admin'给会话添加变量('username', None)删除会话的变量Flask蓝图的作⽤?蓝图Blueprint实现模块化的应⽤- book_bp = Blueprint('book', __name__)创建蓝图对象- 蓝图中使⽤路由@book_('url')- 在另⼀.py⽂件⾥导⼊和注册蓝图from book import book_bp er_blueprint(book_bp)也问别的了,当时没打上来,也忘了。。1. 解释什么是Flask及其好处?Flask是⼀个Python编写的Web微框架,让我们可以使⽤Python语⾔快速实现⼀个⽹站或Web服务。2. Django和Flask有什么区别?FlaskFlask确实很“轻”,不愧是Micro Framework,从Django转向Flask的开发者⼀定会如此感慨,除⾮⼆者均为深⼊使⽤过Flask⾃由、灵活,可扩展性强,第三⽅库的选择⾯⼴,开发时可以结合⾃⼰最喜欢⽤的轮⼦,也能结合最流⾏最强⼤的Python库⼊门简单,即便没有多少web开发经验,也能很快做出⽹站⾮常适⽤于⼩型⽹站⾮常适⽤于开发web服务的API开发⼤型⽹站⽆压⼒,但代码架构需要⾃⼰设计,开发成本取决于开发者的能⼒各⽅⾯性能均等于或优于DjangoDjango⾃带的或第三⽅的好评如潮的功能,Flask上总会找到与之类似第三⽅Flask灵活开发,Python⾼⼿基本都会喜欢Flask,但对Django却可能褒贬不Flask与关系型数据库的配合使⽤不弱于Django,⽽其与NoSQL数据库的配合远远优于DjangoFlask⽐Django更加Pythonic,与Python的philosophy更加吻合DjangoDjango太重了,除了web框架,⾃带ORM和模板引擎,灵活和⾃由度不够⾼Django能开发⼩应⽤,但总会有“杀鸡焉⽤⽜⼑”的感觉Django的⾃带ORM⾮常优秀,综合评价略⾼于SQLAlchemyDjango⾃带的模板引擎简单好⽤,但其强⼤程度和综合评价略低于Jinja2Django⾃带ORM也使Django与关系型数据库耦合度过⾼,如果想使⽤MongoDB等NoSQL数据,需要选取合适的第三⽅库,且总感觉Django+SQL才是天⽣⼀对的搭配,Django+NoSQL砍掉了Django的半壁江⼭Django⽬前⽀持Jinja等⾮官⽅模板引擎Django⾃带的数据库管理app好评如潮Django⾮常适合企业级⽹站的开发:快速、靠谱、稳定Django成熟、稳定、完善,但相⽐于Flask,Django的整体⽣态相对封闭Django是Python web框架的先驱,⽤户多,第三⽅库最丰富,最好的Python库,如果不能直接⽤到Django中,也⼀定能找到与之对应的移植Django上⼿也⽐较容易,开发⽂档详细、完善,相关资料丰富3. Flask-WTF是什么,有什么特点?Flask的简单WTForms集成,包含CSRF、⽂件上传和Recaptcha集成。flask-wtf可以保护表单免受跨站请求伪造(CSRF)的攻击,恶意⽹站将请求发送到被攻击者已登录的其他⽹站时就会引发CSRF4. Flask脚本的常⽤⽅式是什么?在shell中运⾏脚本⽂件在python编译器中run5. 如何在Flask中访问会话?⼀个会话基本上允许记住从⼀个请求到另⼀个请求的信息。在Flask中,它使⽤签名的cookie,以便⽤户可以查看会话内容并进⾏修改。⽤户可以修改会话,只要它有密钥_key。会话(seesion)会话数据存储在服务器上。 会话是客户端登录到服务器并注销的时间间隔。 需要在此会话中进⾏的数据存储在服务器上的临时⽬录中。from flask import session导⼊会话对象session[‘name’] = ‘admin’给会话添加变量(‘username’, None)删除会话的变量6. Flask是⼀个MVC模型吗?如果是,可以⽰例⼀下吗?“””基本上,Flask是⼀个简单的框架,其⾏为与MVC框架相同。所以MVC是Flask的完美选择.“”“7. 解释Python Flask中的数据库连接?python中的数据库连接有两种⽅式在脚本中以⽤第三⽅库正常连接,⽤sql语句正常操作数据库,如mysql关系型数据库的pymsql库⽤ORM来进⾏数据库连接,flask中典型的flask_sqlalchemy,已⾯向对象的⽅式进⾏数据库的连接与操作8. 列举Http请求中常见的请求⽅式?http请求中的8种请求⽅法1、opions 返回服务器针对特定资源所⽀持的HTML请求⽅法 或web服务器发送*测试服务器功能(允许客户端查看服务器性能)2、Get 向特定资源发出请求(请求指定页⾯信息,并返回实体主体)3、Post 向指定资源提交数据进⾏处理请求(提交表单、上传⽂件),⼜可能导致新的资源的建⽴或原有资源的修改4、Put 向指定资源位置上上传其最新内容(从客户端向服务器传送的数据取代指定⽂档的内容)5、Head 与服务器索与get请求⼀致的相应,响应体不会返回,获取包含在⼩消息头中的原信息(与get请求类似,返回的响应中没有具体内容,⽤于获取报头)6、Delete 请求服务器删除request-URL所标⽰的资源*(请求服务器删除页⾯)7、Trace 回显服务器收到的请求,⽤于测试和诊断8、Connect HTTP/1.1协议中能够将连接改为管道⽅式的代理服务器http服务器⾄少能实现get、head、post⽅法,其他都是可选的9. 列举Http请求中常见的请求头?·Accept:浏览器可接受的MIME类型·Accept-Charset: 浏览器通过这个头告诉服务器,它⽀持哪种字符集·Accept-Encoding:浏览器能够进⾏解码的数据编码⽅式,⽐如gzip·Accept-Language:浏览器所希望的语⾔种类,当服务器能够提供⼀种以上的语⾔版本时要⽤到。可以在浏览器中进⾏设置。·Host:初始URL中的主机和端⼝·Referer:包含⼀个URL,⽤户从该URL代表的页⾯出发访问当前请求的页⾯·Content-Type:内容类型·If-Modified-Since: Wed, 02 Feb 201112:04:56 GMT利⽤这个头与服务器的⽂件进⾏⽐对,如果⼀致,则从缓存中直接读取⽂件。·User-Agent:浏览器类型.·Content-Length:表⽰请求消息正⽂的长度·Connection:表⽰是否需要持久连接。如果服务器看到这⾥的值为“Keep -Alive”,或者看到请求使⽤的是HTTP 1.1(HTTP 1.1默认进⾏持久连接·Cookie:这是最重要的请求头信息之⼀·Date:Date: Mon, 22 Aug 2011 01:55:39 GMT请求时间GMT10. 什么是wsgi?WSGI(Web Server Gateway Interface,Web 服务器⽹关接⼝)则是Python语⾔中1所定义的Web服务器和Web应⽤程序之间或框架之间的通⽤接⼝标准。WSGI就是⼀座桥梁,桥梁的⼀端称为服务端或⽹关端,另⼀端称为应⽤端或者框架端,WSGI的作⽤就是在协议之间进⾏转化。WSGI将Web组件分成了三类:Web 服务器(WSGI Server)、Web中间件(WSGI Middleware)与Web应⽤程序(WSGI Application)。Web Server接收HTTP请求,封装⼀系列环境变量,按照WSGI接⼝标准调⽤注册的WSGI Application,最后将响应返回给客户端。11. Flask框架依赖组件?Route(路由)templates(模板)Models(orm模型)blueprint(蓝图)Jinja2模板引擎12. Flask蓝图的作⽤?蓝图Blueprint实现模块化的应⽤book_bp = Blueprint(‘book’, name)创建蓝图对象蓝图中使⽤路由@book_(‘url’)在另⼀.py⽂件⾥导⼊和注册蓝图from book import book_bp er_blueprint(book_bp)作⽤将不同的功能模块化构建⼤型应⽤优化项⽬结构增强可读性,易于维护(跟Django的view功能相似)13. 列举使⽤过的Flask第三⽅组件?flask_bootstrapflask-WTFflask_sqlalchemy14. 简述Flask上下⽂管理流程?每次有请求过来的时候,flask 会先创建当前线程或者进程需要处理的两个重要上下⽂对象,把它们保存到隔离的栈⾥⾯,这样视图函数进⾏处理的时候就能直接从栈上获取这些信息。15. Flask中多app应⽤是怎么完成?请求进来时,可以根据URL的不同,交给不同的APP处理16. wtforms组件的作⽤?WTForms是⼀个⽀持多个web框架的form组件,主要⽤于对⽤户请求数据进⾏验证。17. Flask框架默认session处理机制?Flask的默认session利⽤了Werkzeug的SecureCookie,把信息做序列化(pickle)后编码(base64),放到cookie⾥了。过期时间是通过cookie的过期时间实现的。为了防⽌cookie内容被篡改,session会⾃动打上⼀个叫session的hash串,这个串是经过session内容、SECRET_KEY计算出来的,看得出,这种设计虽然不能保证session⾥的内容不泄露,但⾄少防⽌了不被篡改18. ORM的实现原理?概念: 对象关系映射(Object Relational Mapping,简称ORM,或O/RM,或O/R mapping),是⼀种程序技术,⽤于实现⾯向对象编程语⾔⾥不同类型系统的数据之间的转换。详细介绍:让我们从O/R开始。字母O起源于”对象”(Object),⽽R则来⾃于”关系”(Relational)。⼏乎所有的程序⾥⾯,都存在对象和关系数据库。在业务逻辑层和⽤户界⾯层中,我们是⾯向对象的。当对象信息发⽣变化的时候,我们需要把对象的信息保存在关系数据库中。当你开发⼀个应⽤程序的时候(不使⽤O/R Mapping),你可能会写不少数据访问层的代码,⽤来从数据库保存,删除,读取对象信息,等等。你在DAL中写了很多的⽅法来读取对象数据,改变状态对象等等任务。⽽这些代码写起来总是重复的。ORM解决的主要问题是对象关系的映射。域模型和关系模型分别是建⽴在概念模型的基础上的。域模型是⾯向对象的,⽽关系模型是⾯向关系的。⼀般情况下,⼀个持久化类和⼀个表对应,类的每个实例对应表中的⼀条记录,类的每个属性对应表的每个字段。ORM技术特点:1.提⾼了开发效率。由于ORM可以⾃动对Entity对象与数据库中的Table进⾏字段与属性的映射,所以我们实际可能已经不需要⼀个专⽤的、庞⼤的数据访问层。提供了对数据库的映射,不⽤sql直接编码,能够像操作对象⼀样从数据库获取数据。
发布者:admin,转转请注明出处:http://www.yc00.com/news/1689826982a289038.html
评论列表(0条)