Flask框架

一.Flask介绍

Python 中有许多 Web 开发框架,比如 Django,Flask,Tornado,Bottle 和web.py 等
Flask 则是一个非常轻量级的框架,提供了搭建 Web 服务的必要组件。也就是说 Flask 为你提供工具,库和技术来允许你构建一个 web 应用程序。这个 wdb 应用程序可以使一些 web 页面、博客、wiki、基于 web 的日历应用或商业网站。

Flask 属于微框架(micro-framework)这一类别,微架构通常是很小的不依赖于外部库的框架。这既有优点也有缺点,优点是框架很轻量,更新时依赖少,并且专注安全方面的 bug,缺点是,你不得不自己做更多的工作,或通过添加插件增加自己的依赖列表。

二.Flask基本安装

Flask 的安装很简单,可以全局安装,也可以使用虚拟环境安装。
1.全局安装
全局安装可以直接使用以下命令:

$ sudo pip install flask

2.虚拟环境安装( anaconda)
这里我已经有现成的虚拟环境,我拿来直接用。如果你还没有或不会用,可以参考我以前的博客

激活虚拟环境再安装

$ source activate first

$  pip install flask

出现下图提示就说明已经安装成功

三.用一个例子说明Flask 框架

# 1.flask包中导入Flask类;
from flask import  Flask

# 2. 实例化一个Flask对象,
app = Flask(__name__)
#     __name__是模块的名称或者包的名称
#     作用: 根据这个参数确定flask应用的路径, 从而快速查找模板和html文件的默认路径;
#     模块就是python文件; 包就是目录(跟普通目录多加一个__init__.py);

# 3.基本路由:通过路由绑定一个视图函数
#   @app.route('/'): 告诉Flask哪个URL才能出发对应的函数, 又称为路由;
#   对应定义了一个视图函数, 也就是返回给用户浏览器显示的内容;
#  http://www.westos.org/login/
@app.route('/login/')
def index():   #视图函数
    return  "

hello world

" # 4. 运行Flask应用, 可以指定ip和端口; app.run() #app.run(host='0.0.0.0',port=9000) # '0.0.0.0' 所有的IP都可以访问到

运行后我们会发现出现了一个url地址,这样我们只需用该地址加上我们的路由名即可访问,并显示视图函数的内容。
在这里插入图片描述
默认的ip和端口:
Flask框架_第1张图片
指定ip和端口
在这里插入图片描述
Flask框架_第2张图片

四.路由与变量规则

1.url的一部分可以标记为变量<变量名>

2.flask中路由里面的变量常见类型

int, string, float, path, uuid(通用唯一识别码)
from flask import Flask, request

app = Flask(__name__)

@app.route('//comments/')
def comment1(id):
    return "Comment id: %s" %(id)

@app.route('/welcome//')
def welcome(user):
    app.logger.debug('this is a debug')
    app.logger.warning('this is a warn')
    return user + "用户, 欢迎来到westos"

app.run()

Flask框架_第3张图片
Flask框架_第4张图片

五.URL构建与反向URL

首先我们需要认识两个模块
1.request:对于 Web 应用,与客户端发送给服务器的数据交互至关重要。在 Flask 中由全局的 request 对象来提供这些信息。
属性:
1、request.method :请求的方法

2、request.form:返回form的内容

3、request.args:返回请求中的参数
request.values返回请求中的参数和form

4、request.cookies:cookies信息

5、request.headers:请求headers信息,返回的结果是个list

6、request.url、path、script_root、base_url、url_root:

Flask框架_第5张图片
7、date、files:date是请求的数据,files随请求上传的文件

from flask import Flask, request

app = Flask(__name__)

# 特殊的url地址: http://www.baidu.com/query?id=123&name=westos
@app.route('/query')
def query():
    # 获取url地址里面key值对应的value值;
    id = request.args.get('id')
    name = request.args.get('name')
    return "id: %s, name: %s" %(id, name)


app.run()

Flask框架_第6张图片

2.url_for:
url_for()函数接收两个及以上的参数,他接收函数名作为第一个参数,接收对应URL规则的命名参数,如果还出现其他的参数,则会添加到URL的后面作为查询参数。

通过构建URL的方式而选择直接在代码中拼URL的原因有两点:

1).将来如果修改了URL,但没有修改该URL对应的函数名,就不用到处去替换URL了。
2).url_for()函数会转义特殊字符和Unocode数据,这些工作都不需要我们自己处理。

url_for 和 redirect 区别

url_for是用来拼接 URL 的;可以使用程序 URL 映射中保存的信息生成 URL。url_for() 函数最简单的用法是以视图函数名作为参数, 返回对应的 URL。
redirect 是重定向函数,输入一个URL后,自动跳转到另一个URL所在的地址,例如,你在函数中写 return redirect(‘https://www.baidu.com’) 页面就会跳转向百度页面。

from flask import Flask, request, url_for

app = Flask(__name__)


@app.route('/welcome//')
def welcome(user):
    return user + "用户, 欢迎来到westos"


@app.route('/path/')
def path():
    #查看头部信息
    print(request.headers)
    # 查看默认url地址的请求方法;

    print(request.method)
    # url_for: 根据函数名, 反向生成url地址
    print("用户正在访问url地址:%s" % (url_for(endpoint="welcome", user="westos")))   ##看似在访问第二个,实则在访问第一个
    return "用户正在访问url地址:%s" % (url_for(endpoint="welcome", user="westos"))
app.run(port=5001)

Flask框架_第7张图片
Flask框架_第8张图片

六.常见的HTTP方法

1.常见HTTP请求方法

1 GET: 请求指定的页面信息,并返回实体主体。
2 HEAD: 类似于get请求,只不过返回的响应中没有具体的内容,用于获取报头
3 POST :向指定资源提交数据进行处理请求(例如提交表单或者上传文件)。数据被包含在请求体中。POST请求可能会导致新的资源的建立和/或已有资源的修改。
4 PUT :从客户端向服务器传送的数据取代指定的文档的内容。
5 DELETE: 请求服务器删除指定的页面。
6 CONNECT: HTTP/1.1协议中预留给能够将连接改为管道方式的代理服务器。
7 OPTIONS :允许客户端查看服务器的性能。
8 TRACE: 回显服务器收到的请求,主要用于测试或诊断。
默认路由接受的请求方法为GET

你可能感兴趣的:(Flask框架)