Python Flask Web 试题汇编<待续>
1. 著名的Python Web 开发框架有哪些?
A. Django 框架 B. Flask框架 C. tornado框架 D. Pyramid 框架
2. Flask-WTF是什么?有什么特点?
Flask-wtf是一个用于表单处理,校验并提供csrf验证的功能的扩展库。Flask的简单WTForms集成,包含CSRF、文件上传和Recaptcha集成。flask-wtf可以保护表单免受跨站请求伪造(CSRF)的攻击,恶意网站将请求发送到被攻击者已登录的其他网站时就会引发CSRF
3. 什么是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,最后将响应返回给客户端。
4. Flask框架依赖哪些组件?
Route(路由)
templates(模板)
Models(orm模型)
blueprint(蓝图)
Jinja2模板引擎
5.列举使用过的Flask第三方组件?
flask_bootstrap
flask-WTF
flask_sqlalchemy
6.列举Http请求中的状态码?
1xx —— 元数据
2xx —— 正确的响应
3xx —— 重定向
4xx —— 客户端错误
5xx —— 服务端错误
100 Continue。客户端应当继续发送请求。
200 OK。请求已成功,请求所希望的响应头或数据体将随此响应返回。
201 Created。请求成功,并且服务器创建了新的资源。
301 Moved Permanently。请求的网页已永久移动到新位置。
服务器返回此响应(对GET或HEAD请求的响应)时,会自动将请求者转到新位置。
302 Found。服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
400 Bad Request。服务器不理解请求的语法。
401 Unauthorized。请求要求身份验证。对于需要登录的网页,服务器可能返回此响应。
403 Forbidden。服务器拒绝请求。
404 Not Found。服务器找不到请求的网页。
500 Internal Server Error。服务器遇到错误,无法完成请求。
7. 列举Http请求中常见的请求方式?
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方法,其他都是可选的
8.一个Web应用里,客户端和服务器上的 Flask 程序的交互可以简单概括为以下几步:
1)用户在浏览器输入URL访问某个资源。
2) Flask接收用户请求并分析请求的URL。
3)为这个URL找到对应的处理函数。
4)执行函数并生成响应,返回给浏览器。
5)浏览器接收并解析响应,将信息显示在页面中。
9.Flask站点的模板文件以及静态文件默认约定存放目录是?
默认情况下,模板文件存放在项目根目录中的 templates 文件夹中,静态文件放在 static 文件夹下,这两个文件夹需要和包含程序实例的模块处于同一个目录下.
10.什么是CDN?
CDN指分布式服务器系统。服务商把你需要的资源存储在分布于不同地理位直的多个服器,它会根据用户的地理位直来就近分配服务器提供服务(服务器越近,资源传送就越快)。使用CDN服务可以加快网页资源的加载速度,从而优化用户体验。对于开源的css和J a v a S c r i p t库,CDN提供商通常会免费提供服务。
11.视图函数返回内容有哪些?
视图函数可以返回最多由三个元素组成的元组:响应主体、状态码、首部字段。其中首部字段可以为字典,或是两元素元组组成的列表。
12. get、post、head、put、delete、options、trace 的区别
1、get请求是用来获取数据的,只是用来查询数据,不对服务器的数据做任何的修改,新增,删除等操作。
在这里我们认为get请求是安全的,以及幂等的。安全就是指不影响服务器的数据,幂等是指同一个请求发送多次返回的结果应该相同。
特点:
get请求会把请求的参数附加在URL后面,这样会产生安全问题,如果是系统的登陆接口采用的get请求,需要对请求的参数做一个加密。
get请求其实本身HTTP协议并没有限制它的URL大小,但是不同的浏览器对其有不同的大小长度限制
2、post请求一般是对服务器的数据做改变,常用来数据的提交,新增操作。
特点:
post请求的请求参数都是请求体中
post请求本身HTTP协议也是没有限制大小的,限制它的是服务器的处理能力
3.HEAD和GET本质是一样的,区别在于HEAD不含有呈现数据,而仅仅是HTTP头信息。有的人可能觉得这个方法没什么用,其实不是这样的。想象一个业务情景:欲判断某个资源是否存在,我们通常使用GET,但这里用HEAD则意义更加明确。
4、put请求与post一样都会改变服务器的数据,但是put的侧重点在于对于数据的修改操作,但是post侧重于对于数据的增加。
5、delete请求用来删除服务器的资源。
6、options请求属于浏览器的预检请求,查看服务器是否接受请求,预检通过后,浏览器才会去发get,post,put,delete等请求。至于什么情况下浏览器会发预检请求,浏览器会会将请求分为两类,简单请求与非简单请求,非简单请求会产生预检options请求。
关于options请求具体详细的可以观看另一位作者的这篇文章:https://www.jianshu.com/p/5cf82f092201
7、TRACE请求服务器回显其收到的请求信息,该方法主要用于HTTP请求的测试或诊断。
另外:这些不同方式的请求形式,只是一种规范定义而已,并不是说get请求无法修改服务器的数据,只是一种规范,比如你也可以所有的请求都通过post方式来访问,实现功能上面没有任何问题,只是说这种做不符合了规范而已,我们平常编码还是尽量符合规范比较好。
13.Flask的调试模式特点
1、可以帮助我们查找代码里面的错误,包括原因和代码位置。
2、支持本地开发。如果不是调试模式,每次修改代码后需要手动重新启动程序,这不是很友好,启用调试模式后,修改代码并保存时,程序自动重启,我们可以立即在浏览器中查看最新效果,如果出现问题,还能提供调试器以供调试。
调试模式能加快开发速度,但是要注意项目实施时,应关闭调试模式,提高程序运行的稳定性。