资讯专栏INFORMATION COLUMN

Flask学习

OnlyLing / 422人阅读

摘要:服务器会根据将请求交给相应的程序处理。函数称为视图函数。无参数当访问网站根域名时,会执行函数,返回值的结果会在网页中显示。。而返回特殊状态码可在返回值中添加,代码如下返回特殊状态码键值对形式后的键值对由提供对象处理。

Web框架

Web框架是构建Web应用的一种方式。尽管现在很多语言如PHP、Java都能开发Web应用,这些语言也都有相应成熟的Web框架,但是请求处理是这些Web框架的核心。知乎问答-如何学习Web框架 提到Web框架涉及的基本元素,请求处理是学习Web框架的首要问题。

Flask框架

Flask 是一个用于 Python 的微型网络开发框架。

Flask的‘微’体现在它只提供Web服务的基本功能,其他的功能是由Flask的扩展实现,用户可以根据需求应用核心扩展。它的基本功能依赖于符合 WSGI 规范(Web Server Gateway Interface)的 Werkzeug 库和模板系统 Jinja2
当我们通过URL访问网站时,是向Web服务器发送了请求。服务器会根据URL将请求交给相应的Web程序处理。所以服务器与Web应用程序的交互需要一定的规则。而Python专用的规范是WSGI [PEP-3333定义],文章 WSGI简介 给出了简单说明。

Flask核心功能

Flask涉及到两个重要的类——Flask和Blueprint[蓝本] 类。
flask的应用程序需要Flask类实例化才能运行,网站的基本配置信息也包含在此类中。
实例化如下:

from flask import Flask
app = Flask(__name__)#__name__程序的文件名,通过此变量定位资源文件位置

配置如下:

app.config["CONFIGURATION"] = "CONFIGURATION"

Blueprint类与Flask类似,它能够更好的组织Web应用程序,并能延迟Flask类实例的创建。

1. 路由和请求处理

路由的存在是为了将Web服务的请求转交给Flask程序实例的函数处理,简单的说处理URL和函数之间的关系称为路由。函数称为视图函数
Flask类包含了route装饰器,通过初始化Flask类注册视图函数。

无参数
@app.route("/")
def index():
    return "

Hellow World

"

当访问网站根域名时,会执行index函数,返回值的结果会在网页中显示。。

带参数

在很多时候用户不同,使用的URL不同,带参数的路由能够很好的处理URL中变化的部分。如在网页中显示个人名字

@app.route("/user/")
def user(name):
    return "

Hello, {!r}

".format(name)

部分是可变部分,name将作为参数传递给视图函数。此部分可以指定name 的类型,如@app.route("/user/")可指定参数类型
可指定的类型有int,float,path(路径标识)

处理GET, POST请求
@app.route("/", methods=["GET", "POST"])
def index():
    pass

当网页需要处理表单等请求时,需要添加methods,使得视图函数能够处理http请求。methods中的参数包括了Http协议中定义的5种动作。

响应处理
from flask import make_request
@app.route("/"):
    response = make_request("

Cookie

") response.set_cookie("answer","42") return response

响应处理中很重要的一部分是处理Http协议的状态码。Flask默认状态码是200。而返回特殊状态码可在返回值中添加,代码如下:

@app.route("/")
def index():
    return "

Bad Request

", 400 #返回特殊状态码
“"?" + 键值对“ 形式

? 后的键值对由flask提供request对象处理。假设URL为127.0.0.1:5000?page=1

from flask import request

@app.route("/", methods=["GET"])
def index():
    page = request.args.get("page", type=int)
2. 异常处理

在浏览网页时,可能会遇到一些错误,flask提供abort函数抛出错误,而抛出的异常会直接返回给Web服务器。我们也可以自定义处理这些异常。代码如下:

from flask import abort
@app.route("/")
def index():
    abort(404) #抛出404异常
    
@app.errorhandler(404) 
def page_not_found(error): # 自定义处理异常
    return "This page does not exist", 404
3. 请求钩子

请求钩子是指在请求之前或之后所做的处理函数

函数名 功能
before_first_request 在处理第一个请求之前执行
before_request 每次请求之前执行
after_request 无异常,每次请求之后执行
teardown_request 即使异常,也在请求之后执行

请求钩子函数与视图函数之间通过g变量共享数据。

问题

Q1:如何调试Web应用程序?
Q2:如何评价Web应用程序的性能?
Q3:Web应用程序如何做单元测试?

学习资料

《Flask Web 开发》SegmentFault系列文章 - 作者只录入了前七章内容,未涉及实例开发部分

《Flask Web 开发》中文版 - 建议入手第二版

《Flask Web 开发》作者Blog - 书中有任何疑问可以在文章中搜索

Flask大型教程项目Blog

Flask API文档

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/37783.html

相关文章

  • Flask学习资源整理

    摘要:学习资源中文学习大本营强烈推荐开发从小白开始学习资料推荐一些资源好文使用小结实例开发博客常用命令打包包中的依赖包安装依赖包扩展为应用提供编写脚本的功能。可以用来运行一个开发服务器,也可以与数据库交互,方便开发。 学习资源 Python 中文学习大本营(Explore Flask强烈推荐) Flask 开发从小白开始 cnblog-Flask 学习资料 推荐一些Flask资源 Fl...

    KunMinX 评论0 收藏0
  • Web 开发学习笔记(1) --- 搭建你的第一个 Web Server

    摘要:简介是一个轻量级的框架如果要学习开发非常适合作为我们学习的起点通过接下来的这一些列的博客我们将学习如何利用以及其他工具搭建一个简单的网站开发环境命令如下第一个首先我们创建一个文件夹并在其中新建一个文件接着我们打开按照的示例 简介 Flask 是一个轻量级的 Web 框架, 如果要学习 Web 开发, Flask 非常适合作为我们学习的起点. 通过接下来的这一些列的博客, 我们将学习如何...

    calx 评论0 收藏0
  • flask文档学习笔记1-快速入门

    摘要:示例如下静态路由使用动态变量的路由未指定变量类型使用动态变量的路由指定变量类型指定的路由变量,可以作为被装饰的函数参数传入进来。 开始决定认真的在网上写一些东西,主要原因还是在于希望能提升学习效果。虽说python写了有几年,但是web后端框架的确没怎么接触过,买了本狗书寥寥草草的过了一遍,发现很多东西还是理解不深,真的是好记性不如烂笔头,知识也要从基础开始,退回来好好看看官方文档,再...

    lingdududu 评论0 收藏0
  • 最终篇:简洁易懂,初学者挑战学习Python编程30天 (五)

    摘要:和是最受欢迎的。虚拟环境将允许将项目依赖项与本地机器依赖项隔离开来。文件将是项目中的主文件。运行后,检查本地主机。在中创建一个名为的文件夹,并创建一个名为的文件夹。部署创建帐户为前端和全栈应用程序提供免费部署服务。 ...

    1fe1se 评论0 收藏0

发表评论

0条评论

OnlyLing

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<