zoukankan      html  css  js  c++  java
  • Flask 入门(第三篇)

    1. 安装虚拟环境

    安装虚拟环境:

    $ sudo pip install virtualenv
    $ sudo pip install virtualenvwrapper
    virtualenv --version		# 检查版本
    

    安装完虚拟环境后,如果提示找不到mkvirtualenv命令,须配置环境变量:

    # 1、创建目录用来存放虚拟环境
    mkdir $HOME/.virtualenvs
    
    # 2、打开~/.bashrc文件,并添加如下:
    export WORKON_HOME=$HOME/.virtualenvs
    source /usr/local/bin/virtualenvwrapper.sh
    
    # 3、运行
    source ~/.bashrc
    

    创建虚拟环境(ubuntu里须在联网状态下)

    $ mkvirtualenv Flask_py
    

    进入虚拟环境

    $ workon Flask_py
    

    退出虚拟环境

    如果所在环境为真实环境,会提示deactivate:未找到命令

    $ deactivate Flask_py
    

    2. 安装Flask依赖包

    安装依赖包(须在虚拟环境中): 依赖就是开发以及程序运行需要使用的环境的集合。包括软件、插件等。我们一般会把需要使用的依赖给保存在一个文件中,命名为requirements的txt文件。如果在其它环境中要运行我们的项目,直接通过指令可以一次性安装所有依赖。

    安装依赖包(须在虚拟环境中):

    $ pip install -r requirements.txt
    

    生成依赖包(须在虚拟环境中):

    $ pip freeze > requirements.txt
    

    在ipython中测试安装是否成功

    $ from flask import Flask
    

    3. Flask 运行流程

    客户端发起 HTTP 请求,web 服务器使用 WSGI 协议将来自客户端的请求交给 flask 实例。

    WSGI 是 Python 语言定义的 web 服务器 和 web 应用程序之间的一种简单而通用的接口,它封装了 http 请求,解析 http 请求、发送 http 响应等这些底层代码。

    程序实例使用 Werkzeug 做路由分发,根据每个 URL 请求,找到具体视图函数。router 内部会调用 add_url_route() 方法来实现路由注册。

    调用视图函数,获取响应数据后,将数据传入 HTML 模板文件中,模板引擎负责渲染响应数据,然后由 flask 返回响应数据给浏览器,最后浏览器将数据显示给客户端。

    4. 拓展

    4.1 上下文

    上下文就像一个容器,保存 Flask 程序运行时的一些信息。Flask 中有两种上下文:请求上下文、应用上下文。

    请求上下文(request context)

    requestsession 都属于请求上下文对象

    • request:封装 HTTP 请求内容
    • session:记录请求会话信息,如:保存用户信息 session['username']= user.id

    应用上下文(application context)

    current_appg 都属于应用上下文对象

    • current_app:当前运行程序文件的程序实例 current_app.name 打印当前应用程序实例名字
    >>> from s3 import app
    >>> from flask import Flask
    >>> context = app.app_context()
    >>> context.push()
    >>> current_app.name
    's3'
    
    • g:处理请求时,用于临时存储的对象,每次请求时都会重设这个变量,一般用于获取临时请求的用户信息。
      • 当调用app = Flask(name)的时候,创建了程序应用对象app;
      • request 在每次http请求发生时,WSGI server调用Flask.call();然后在Flask内部创建的request对象;
      • app的生命周期大于request和g,一个app存活期间,可能发生多次http请求,所以就会有多个request和g。
      • 最终传入视图函数,通过return、redirect或render_template生成response对象,返回给客户端。

    请求上下文和应用上下文区别

    • 请求上下文:保存了客户端和服务器交互的数据。
    • 应用上下文:在flask程序运行过程中,保存的一些配置信息,比如程序文件名、数据库的连接、用户信息等。

    4.2 Flask-Script扩展命令行

    除了可以使用 app.run() 传递参数外(可以传递 host/ip等),还可以通过 Flask-Script 拓展程序拓展命令行,从命令行传递这些参数:

    app.py

    from flask import Flask
    from flask_script import Manager
    
    app = Flask(__name__)
    
    manager = Manager(app)
    
    @app.route('/')
    def index():
        return 'OK'
    
    if __name__ == "__main__":
        manager.run()
    

    通过 python app.py runserver --help 来查看可以传递的参数。(前提是你要安装好 Flask-Script

  • 相关阅读:
    微信小程序--数据存储
    微信小程序---setData
    关于MVC中 服务器无法在发送 HTTP 标头之后修改 cookie此类问题的解决
    获取Web项目中的控制器类以及类中Action方法
    使用Attribute限制Action只接受Ajax请求
    Dapper 返回Sql server 自增长ID 标识列SCOPE_IDENTITY
    根据数据库反向生成PD
    Git常用命令大全,迅速提升你的Git水平
    官方VisualStudio.gitignore配置
    Win10-1909删除自带的微软输入法,添加美式键盘
  • 原文地址:https://www.cnblogs.com/midworld/p/11076008.html
Copyright © 2011-2022 走看看