Flask框架--第一个flask程序

1、简介

Flask是一个轻量级的可定制框架,使用Python语言编写,较其他同类型框架更为灵活、轻便、安全且容易上手。它可以很好地结合MVC模式进行开发,开发人员分工合作,小型团队在短时间内就可以完成功能丰富的中小型网站或Web服务的实现。另外,Flask还有很强的定制性,用户可以根据自己的需求来添加相应的功能,在保持核心功能简单的同时实现功能的丰富与扩展,其强大的插件库可以让用户实现个性化的网站定制,开发出功能强大的网站。

2、初始化

web服务器使用一个名位为web服务器网关接口(WSGI)协议,把接收自客户端的所有请求都转交给这个对象处理。

from flask import Flask
#初始化
app = Flask(__name__)

flask类的构造函数只有一个必须指定的参数,即程序主模块或包的名字。__name__变量就是所需要的值。

3、路由和视图函数

客户端把请求发给web服务器,web服务器再把请求发给Flask程序。程序需要知道对每一个URL请求运行哪些代码,所以保存了一个URL到函数的映射关系。处理URL和函数之间关系的程序成为路由。

#路由和视图函数
@app.route("/")
def index():
    return "<h1>Hello,world!</h1>"

定义一段动态名字的路由:

@app.route("/user/<name>")
def user(name):
    return "<h1>hello,%s!<h1>"%name

index()函数就是视图函数。视图函数返回的响应可以使包含HTML字符串。

4、启动服务器

#启动路由器
if __name__ == "__main__":
    app.run(debug=True)

__name__ == "__main__"是确保直接执行这个脚本时才会启动开发web服务器。如果这个脚本是由其他脚本引入,程序假定父级脚本会启动不同的服务器,因此不会执行app.run().

5、示例:

#coding:utf-8
from flask import Flask

#初始化
app = Flask(__name__)

#路由和视图函数
@app.route("/")
def index():
    return "<h1>Hello,world!</h1>"

@app.route("/user/<name>")
def user(name):
    return "<h1>hello,%s!<h1>"%name

#启动路由器
if __name__ == "__main__":
    app.run(debug=True)

在执行程序时,会生成一段路径 http://127.0.0.1:5000/,如果我们直接输入 http://127.0.0.1:5000/user/程潇,便得到以下结果:

运行结果:

6、请求响应交互

(1)程序和请求上下文

为了避免大量的可有可无的参数把视图函数弄得一团糟,flask使用上下文临时把某些对象变成全局可访问。

from flask import request

@app.route("/")
def index():
    user_agent = request.headers.get("User-Agent")
    return "<p>Your brower is %s</p>"%(user_agent)

在多线程服务器中,多个线程同时处理不同客户端发送的不同请求时,每个线程看到request对象必然不同。Flask使用上下文让特定的变量在一个线程中全局可访问,与此同时却不会干扰其他线程。

7、请求调度

程序收到客户端发来的请求时,要找到相关处理该请求的视图函数。为了完成这个任务,Flask会在程序的url映射中查找请求的url。url映射是url和视图函数之间的对应关系,flask使用app.route()装饰器或者非装饰器形式的app.add_url_rule()生成映射。

8、响应

200:表明这个请求已经被成功执行了。

400:表明请求无效。

302:重定向,指向的地址由Location首部提供。

404:表明url中动态参数id对应的用户不存在。

9、Flask拓展

使用flask-script支持命令行选项

Flask的开发web服务器支持很多启动设置选项,但是只能在脚本中作为参数传给app.run()函数。Flask-script是一个flask扩展,为flak程序添加一个命令行解析器。flask-scripr自带一组常用选项,而且还支持自定义命令。

打开cmd程序,输入:

pip install flask-script

 

示例:

from flask.ext.script import Manager
manager = Manager(app)

if __name__ == "__main__":
    manager.run()

本期学习到此结束,欢迎大家关注指教。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值