zoukankan      html  css  js  c++  java
  • 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>
  • 相关阅读:
    51nod 1051【基础】
    HDU5971【瞎搞】
    Lightoj1018 【状压DP】
    HDU2604【矩阵快速幂】
    HDU1501【简单DP】
    HDU3555【数位DP】
    Lightoj1037【状压DP】
    51nod 1099【贪心】
    HDU5950【矩阵快速幂】
    51nod 1049【经典】
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/14143192.html
Copyright © 2011-2022 走看看