美文网首页Python
教你用flask创建第一个应用

教你用flask创建第一个应用

作者: 小志Codings | 来源:发表于2021-04-27 20:52 被阅读0次

    1.1 初始化

    所有flask应用都必须创建一个应用实例。Web服务器使用一种名为web服务器网关接口(WSGI, Web server gateway interface)的协议,把接收自客户端的所有请求都转交给这个对象处理。应用实例是flask类的对象,通常由下面的代码所创建:

    from flask import Flask
    app = Flask(__name__)
    

    Flask类的构造函数只有一个必须指定的参数,即应用主模块或包的名称。

    from flask import Flask
    
    print(__name__)                       
    

    运行结果

    __main__
    

    在每一个程序里面一般都有一个程序的主入口

    if __name__ == "__main__"
    

    所以你应该明白为什么打印出来的结果是

    __main__
    

    其实就是主模块或者是包的名称

    1.2 路由和视图函数

    客户端(例如web浏览器)把请求发送给web浏览器,web浏览器再将请求发送给flask应用实例。应用实例需要知道对每个url的请求需要运行哪些代码到Python函数的映射关系。处理url和函数之间的关系的程序称为路由

    在flask应用中定义路由的最简便的方式是使用应用实例提供的app.route装饰器,下面的代码就说明了如何使用装饰器声明路由:

    @app.route('/')
    def index():
        return '<h1>Hello world</h1>'
    

    上面的程序将index()函数注册成为应用根地址的处理程序。

    index()这样处理入站请求的函数称为视图函数,如果应用部署在域名为www.example.com的服务器上,在浏览器中访问该网站,会触发服务器执行index()函数,这个函数的返回值,就是响应值

    在每一次访问网站的时候,你会发现网站的地址是会改变的,Flask支持这种形式的URL,只要在app.route装饰器中使用特殊的语法之后就可以实现。

    @app.route('/user/<name>')
    def index(name):
        return '<h1>Hello, {}</h1>'.format(name)
    

    路由URL中放在尖括号里面的内容就是动态部分。调用该函数时flask会奖动态部分作为参数,传入index()函数。

    路由的动态部分默认是字符串,当然也可以是其他类型,例如:/user/<int:id>,只会匹配动态片段id为整数的URL,例如:/user/123

    1.3 一个完整的应用

    确保在flasky文件夹内,创建一个hello.py脚本,定义一个应用实例、一个路由和一个视图函数。

    from flask import Flask
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return '<h1>Hello world</h1>'
    

    1.4 Web开发服务器

    flask应用自带的web服务器,通过flask run命令启动。这个命令在FLASK_APP环境变量指定的Python脚本中寻找应用实例。

    若想要启动手把手教你从0到1学会flask写的hello.py应用,首先确保创建的虚拟环境已经激活,而且里面安装了flask。Linux和macOS启动下述命令启动web服务器

    (venv) $ export FLASK_APP=hello.py
    (venv) $ flask run 
    

    服务器启动之后便开始轮询、处理请求。按Ctrl+C键停止服务器,轮询才开始停止。

    服务器运行时,在web浏览器的地址栏中输入http://127.0.0.1:5000

    如果在URL后面再输入任何内容,应该不知道如何处理,会向浏览器返回错误代码404,这个错误,就是当你访问不存在的网页时就会见到

    1.5 动态路由

    在浏览器中访问这个动态路由,你会看到一条个性化信息,包含你在url提供的名字

    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, {} !</h1>'.format(name)
    
    

    在浏览器输入http://127.0.0.1:5000/user/jack

    1.6 调试模式

    flask应用可以在调试模式中运行,开发服务器默认会加载两个便利的工具,重载器调试器

    启动重载器之后,flask会监视项目中的所有源码文件,发现变动时会重启服务器。在开发过程中运行启动重载器和服务器特别方便,因为每次修改源码文件之后,服务器会重启,让改动生效。

    调试器是一个基于web的工具,当应用抛出来处理异常时,它会浏览器中。此时,web浏览器变成一个交互式栈跟踪,你可以在里面审查代码。

    调试模式默认禁用。若想启用,在执行flask run命令之前设定FLASK_DEBUG=环境变量

    (venv) $ export FLASK_APP=hello.py
    (venv) $ export FLASK_DEBUG=
    (venv) $ flask run
    

    ==千万不要在生产服务器中启动调试模式。客户端可以通过调试器请求执行远程代码,因此可能导致生产服务器遭到攻击!!==

    相关文章

      网友评论

        本文标题:教你用flask创建第一个应用

        本文链接:https://www.haomeiwen.com/subject/gmbprltx.html