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,视图函数,负责处理业务逻辑

Flask框架入门的更多相关文章

  1. Flask 框架入门

    Flask Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱采用 Werkzeug ,模板引擎则使用 Jinja2 . 安装 Flask 依赖两个外部库, We ...

  2. Flask框架入门(一)

    Flask诞生于2010年,是Armin ronacher(人名)用 Python 语言基于 Werkzeug 工具箱编写的轻量级Web开发框架. Flask 本身相当于一个内核,其他几乎所有的功能都 ...

  3. Python的Flask框架入门-Ubuntu

    全文请见tuts code:An Introduction to Python's Flask Framework Flask是Python一个小而强大的web框架.学起来简单,用起来也容易,能够帮你 ...

  4. Python Flask框架入门

    序言 Flask封装功能不及Django完善,性能不及Tornado,但是Flask的第三方开源组件比丰富. 如果你是一个追求极简风格的完美主义者,那么Flask适合你. 资料

  5. Flask框架从入门到实战

    Flask简介: Flask是一个使用 Python 编写的轻量级 Web 应用框架,基于 WerkzeugWSGI工具箱和 Jinja2模板引擎.使用 BSD 授权. Flask也被称为 " ...

  6. Flask 入门一( flask 框架和 flask-script 库)

    Flask 入门一( flask 框架 和 flask-script 库) 一.Flask框架: 1.简介 Flask是一个非常小的Python Web框架,被称为微型框架:只提供了一个稳健的核心,其 ...

  7. Python之Flask框架项目Demo入门

    Python+Flask框架项目Demo入门 本例子用到了 Flask+蓝图+Flask-Login+SQLAlchemy+WTForms+PyMySQL相关架构 Flask Web框架介绍 Flas ...

  8. flask 框架快速入门

    flask 框架快速入门 搭建一个简易flask项目 首先使用 Pycharm创建flask项目 运行flask项目 1.使用Pycharm搭建flask项目 (如果Pycharm新建项目中未出现该图 ...

  9. Python 什么是flask框架?快速入门

    一:Python flask框架 前言 1.Python 面向对象的高级编程语言,以其语法简单.免费开源.免编译扩展性高,同时也可以嵌入到C/C++程序和丰富的第三方库,Python运用到大数据分析. ...

随机推荐

  1. Python - pytesseract 机器视觉

    机器视觉  - tesseract ( 验证码 ) 安装 Ubuntu sudo apt-get install tesseract-ocr Windows 下载安装包 添加环境变量(Path) :搜 ...

  2. 阿里云服务器怎么用ip访问不了

    个人想做个网站,就买了个阿里云服务器,不得不说阿里的安全做的很好,但是对于我这种小白,就成了麻烦了 工具/原料   阿里云服务器 方法/步骤     首先百度搜索阿里云,进入登录界面,输入账号密码登录 ...

  3. 011-通过网络协议解析网络请求-DNS-ARP-TCPIP

    一.概述 1.1.tcp/ip概述 TCP/IP不是一个协议,而是一个协议族的统称.里面包括IP协议.IMCP协议.TCP协议.跨越了多层模型的多层 TCP/IP协议族按照层次由上到下,层层包装.最上 ...

  4. Qt编写安防视频监控系统6-面板开关

    一.前言 面板开关功能是整个系统最人性化的功能之一,可以对主界面中左侧右侧的各个小面板进行显示和隐藏,当隐藏的时候,另外的同级面板自动拉伸填充,这样就不会显得空洞,直接在每个面板的右上角提供了关闭按钮 ...

  5. uni-app 时间格式问题 new Date(str) IOS系统跟Android系统不兼容

    今天做了一个需求,要在列表中把后台返回来的时间给显示出来,使用 new Date(str)  在微信开发者工具上显示是没有问题的,然后在IOS系统上显示是NAN. 原因是 IOS系统只识别 " ...

  6. CockroachDB学习笔记——对此的选择

    无意间了解到TiDB,然后知道了他是一款国产团队开源的NewSQL数据库, 看了一下官网,有很多中文的文档和技术分享挺不错的. 但是安装起来好像挺麻烦的说. 测试的硬件环境 也吓死我了,我只有一台笔记 ...

  7. Had I not seen the Sun(如果我不曾见过太阳)

    Had I not seen the Sun by Emily Dickinson Had I not seen the Sun I could have borne the shade But Li ...

  8. vue知识点积累

    vue中 列表组件写key,起作用是什么? <ul> <li v-for="item in items" :key="item.id"> ...

  9. c++学习笔记_5

    前言:本笔记所对应的课程为中国大学mooc中北京大学的程序设计与算法(三)C++面向对象程序设计,主要供自己复习使用,且本笔记建立在会使用c和java的基础上,只针对与c和java的不同来写 继承 继 ...

  10. Linux上,最常用的一批命令解析(10年精选)

    Linux这么多命令,通常会让初学者望而生畏.下面是我结合日常工作,以及在公司的内部培训中,针对对Linux不是很熟悉的同学,精选的一批必须要搞懂的命令集合.任何一个命令其实都是可以深入的,比如tai ...