Flask简述

什么是Web Framework?

Web Application Framework(Web应用程序框架) 或简单的Web FrameWork(Web框架) 表示一个库和模块的集合, 使Web应用程序开发人员能够编写应用程序, 而不必担心

协议, 线程管理等低级细节.

什么是Flask?

Flask是一个用Python编写的Web应用程序框架. 由Armin Ronacher开发, 他领导一个名为Pocco的国际Python爱好团队。Flask基于Wrkzeug WSGI工具包和JinJa2模板引擎.两者都是Pocco项目

WSGI

Web Server Gateway Interface(Web服务器网关接口,WSGI)已经用作Python Web应用程序开发的标准。WSGI是Web服务器和Web应用程序之间通用接口的规范。

Flask 简单应用:

为了测试Flask安装, 请在编辑器将以下代码输入

from flask import Flask
app = Flask(__name__)

@app.route('/')
def hello_world():
   return 'Hello World'

if __name__ == '__main__':
   app.run()

必须在项目中导入Flask模块,Flask类的一个对象是我们的WSGI应用程序

Flask构造函数使用当前模块(__name__)的名称作为参数

Flask类的route()函数是一个装饰器,它告诉应用程序哪个URL应该调用相关的函数

app.route(rule, options)

rule参数表示该函数的URL绑定

options是要转发给基础的Rule对象的参数列表

在上面的实例中,'/' URL与hello_word()函数绑定,因此,当在浏览器打开Web服务器的主页的时候,将呈现出改函数的输出. 最后,Flask类的run()方法在本地开发服务器上运行应用程序

app.run(host, port, debug, options)

所有参数都是可选的

host: 要监听的主机名,默认为127.0.0.1(loaclhost), 设置为 '0.0.0.0' 以使服务器在外部可用

port: 默认值为5000

debug: 默认为False,如果提供True, 则提供调试信息

options: 要转发到底层的Werkzeug服务器.

Flask路由

现代Web框架使用路由技术来帮助用户记住应用程序URL,可用直接访问所需要的页面,而无需从主页导航

Flask中的route()装饰器用于将URL绑定到函数,例如

@app.route('/test')
def hello_world():
   return 'Hello World'

在这里,URL '/test'规则的绑定到hello_word()函数,因此,如果用户访问http://localhost:5000/hello URL, hello_word()函数的输出将在浏览器中呈现

application对象的add_url_rule()函数也用于将URL与函数绑定,如上例所示,使用route()

装饰器的目的也以下表示:

def hello_world():
   return 'Hello World'
app.add_url_rule('/', 'test', hello_world)

Flask变量规则

通过向规则参数添加变量部分,可以动态构建URL,此变量部分标记为<variable-name> 。他作为关键字参数传递给规则相关联的函数。在以下实例中,route()装饰器的规则参数包含附加到URL '/helo'的<name>。因此,如果在浏览器中输入http://localhost:5000/test/11 作为url,则11将作为参数传递给hello函数

@app.route('/test/<name>')
def hello_world(name):
   return 'Hello World {}'.format(name)
app.run()

Flask变量规则

通过向规则参数添加变量部分,可以动态构建URL。此变量部分标记为<variable-name>。 它作为关键字参数传递给与规则相关联的函数

除了默认字符串变量部分之外,还可以使用以下转换器构建规则

int: 接收整数 float:接收浮点型 path:接收用作目录分隔符的斜杠

@app.route('/test/<int:ID>')
def hello_world(ID):
   return 'Hello World {}'.format(ID)
app.run()

Flask URL构建

url_for()函数对于动态构建特定函数的URL非常有用,改函数接收函数的名称作为第一个参数,以及一个或者多个关键字参数,每个参数对于URL的变量部分

request.form.get(),获取post请求传送过来的参数

request.args.get(),获取get请求传送过来的参数

test.py

from flask import Flask, redirect, url_for, request
app = Flask(__name__)

@app.route('/login', methods = ['GET', 'POST'])
def test():
   if request.method == 'GET':
      username, password = request.args.get('username'), request.args.get('password')
      #重定向到一个新的方法,get_test
      return redirect(url_for('get_test'))
   elif request.method == 'POST':
      username, password = request.form.get('username'), request.form.get('password')
      return redirect(url_for('post_test', name = username))

@app.route('/get_test')
def get_test():
   return 'get_test'

#传入的name和函数里面的name参数名称保持一致
@app.route('/post_test/<name>')
def post_test(name):
   return 'post_test %s'%name

login.html

<html>
   <body>
      <form action = "http://127.0.0.1:5000/login" method = "post">
         <p>Enter Name:</p>
         <p><input type = "text" name = "username" /></p>
         <p><input type = "text" name = "password" /></p>
         <p><input type = "submit" value = "submit" /></p>
      </form>

   </body>
</html>
原文地址:https://www.cnblogs.com/yunxintryyoubest/p/14143192.html