zoukankan      html  css  js  c++  java
  • Flask框架入门

    Flask-基本入门

    简介

    • flask被称为微型框架,只提供了一个强健的核心,其他功能全部通过扩展库来实现;也就是说可以根据项目需要量身打造。他适合入门学习以及高手研究。

    • 组成:WSGI、模板引擎(Jinja2)

    WEB工作原理

    • B/S和C/S架构

    • B/S架构工作原理

      • 客户端(浏览器) <=> WEB服务器(nginx) <=> WSGI(uWSGI) <=> Python(flask) <=> 数据库(MySQL)

      • 说明:flask框架自带了一个测试服务器,没有考虑性能部署。

    配置虚拟环境

    • 安装virtualenv:pip3 install virtualenv

      • 创建虚拟环境:virtualenv venv

      • 启动虚拟环境:source venv/bin/activate

      • 退出虚拟环境:deactivate

    • 安装virtualenvwrapper:

      • 安装pip:sudo apt-get install python-pip

      • 安装virtualenvwrapper:pip install virtualenvwrapper

      • 配置:

        • 常见专门用于存放虚拟环境的目录:~/.virtualenvs

        • 在文件~/.bashrc末尾添加如下内容:

        export WORKON_HOME=$HOME/.virtualenvs
        source $HOME/.local/bin/virtualenvwrapper.sh
        alias mkvirtualenv='mkvirtualenv -p /usr/bin/python'
        alias mkvirtualenv3='mkvirtualenv -p /usr/bin/python3'

        重新加载:source ~/.bashrc

    • 查看虚拟环境

      • lsvirtualenv 或 workon

    • 创建虚拟环境

      • python2:mkvirtualenv 虚拟环境名

      • python3:mkvirtualenv3 虚拟环境名

    • 使用虚拟环境:

      • workon 虚拟环境名

    • 退出虚拟环境

      • deactivate

    • 删除虚拟环境

      • rmvirtualenv 虚拟环境名

    • 安装flask

      • 创建虚拟环境:mkvirtualenv3 flask

      • 安装flask:pip install flask

    使用测试

    • 代码:见《manage.py》

    from flask import Flask

    app = Flask(__name__)

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

    if __name__ == '__main__':
    app.run()
    • 启动:python manage.py runserver

    • 测试:浏览器输入127.0.0.1:5000

    • 启动参数

      参数说明
      debug 是否开启调试模式,默认为False,开启后代码修改会自动加载
      threaded 是否开启多线程
      port 指定端口
        指定主机,设置为'0.0.0.0'可以通过IP进行访问

      app.run(debug=True, threaded=True, port=5050, host='0.0.0.0')

    请求与响应

    • 变量或对象

      名称上下文说明
      current_app 程序上下文 当前运行的应用实例
      g 程序上下文 全局对象,处理请求的临时数据
      request 请求上下文 请求对象,包含了客户端所有的HTTP请求信息
      session 请求上下文 用户会话,用于保存需要'记住'的信息
    • 请求钩子函数

      函数说明
      before_first_request 第一次请求之前
      before_request 每次请求之前
      after_request 每次请求之后,前提是没有异常
      teardown_request 每次请求之后,无论是否有异常

      所谓的钩子函数,就是框架给用户预留的后门

    视图函数

    • 无参路由


      @app.route('/test/')
      def test():
         return 'for test yyy'
    • 带参路由

      见代码

    • 说明

      • 路由最后的'/'加上后,在测试时(浏览器中)加不加都可以

      • 若需要参数,参数需要写在<>中,对应视图函数的参数要与路由参数一致

      • 若需要指定参数类型,如:int/float/path等,应该写在参数名之前,使用':'与参数名分割

      • 若不指定参数类,默认为string,path其实也是字符串,只不过'/'不再是分隔符

    请求(request)

    • 客户端的所有的请求信息都放在了request对象中

    • 常用:url、method、args、headers等

    响应(resposne)

    • 直接返回一个字符串即可,默认状态码为200,表示成功

    • 返回一个元组,即在字符串后直接指定状态码

    • 也可以先创建一个响应对象,然后返回该响应对象

    重定向(redirect)

    • 说明:当网站的URL更换时,有需要对老的地址进行支持

    • redirect:重定向函数

    • url_for:根据视图函数名构造路由地址,参数是视图函数名

    终止(abort)

    • abort:向系统抛出一个异常,系统会捕获并作出统一处理

    • @app.errorhandler:定制错误显示

    扩展:

    • MVC:就是为了解耦

      • M:model,模型,即数据模型

      • V:view,视图,负责显示逻辑

      • C:controller,控制器,负责业务逻辑处理

    • MTV:功能同MVC

      • M:model,模型,即数据模型

      • T:template:模板,负责显示逻辑

      • V:view function,视图函数,负责处理业务逻辑

  • 相关阅读:
    node
    github
    [模块] pdf转图片-pdf2image
    python 15 自定义模块 随机数 时间模块
    python 14 装饰器
    python 13 内置函数II 匿名函数 闭包
    python 12 生成器 列表推导式 内置函数I
    python 11 函数名 迭代器
    python 10 形参角度 名称空间 加载顺序
    python 09 函数参数初识
  • 原文地址:https://www.cnblogs.com/kiki5881/p/8921244.html
Copyright © 2011-2022 走看看