介绍

Flask是一个使用Python编写的轻量级 Web 应用框架。其WSGI工具箱采用 Werkzeug ,模板引擎则使用 Jinja2。
Flask也被称为 “microframework” ,因为它使用简单的核心,用 extension 增加其他功能。Flask没有默认使用的数据库、窗体验证工具。
之所以说Flask是微框架,因为它仅仅实现了Web应用的核心功能:Flask由两个主要依赖组成(提供路由、调试和Web服务器网关接口的Werkzeug和提供模板的Jinja2)。其他的一切(比如数据库集成,表单处理,文件上传,用户认证)都由第三方库来完成,如果插件满足不了你的需求,你也可以自行开发。

安装

  1. pip install Flask

目录管理

官方文档推荐使用的目录结构:

  1. /home/user/FlaskProject/
  2. ├── apps /蓝图
  3. ├── __init__.py / 这里创建app对象函数,并注册蓝图
  4. ├── user
  5. ├── __init__.py
  6. ├── model.py
  7. ├── view.py
  8. ├── article
  9. ├── auth.py
  10. ├── blog.py
  11. ├── templates/ 模板文件
  12. ├── base.html
  13. ├── auth/
  14. ├── login.html
  15. └── register.html
  16. └── blog/
  17. ├── create.html
  18. ├── index.html
  19. └── update.html
  20. ├── static/ 静态文件
  21. └── style.css
  22. ├── setup.py
  23. └── app.py //调用app创建函数,使用flask script 和 Migrate 管理app
  24. ├── tests/
  25. ├── conftest.py
  26. ├── data.sql
  27. ├── test_factory.py
  28. ├── test_db.py
  29. ├── test_auth.py
  30. └── test_blog.py
  31. ├── venv/

作为一个项目开发者,良好的项目目录结构管理习惯一定要有。
python推荐使用packages来组织管理大型项目,这里练习也一定要跟上规范。

  • flaskr, a Python package containing your application code and files.
  • tests/, a directory containing test modules.
  • venv/, a Python virtual environment where Flask and other dependencies are installed.
  • setup.py Installation files telling Python how to install your project.
  • .gitignore Version control config, such as Git. You should make a habit of using some type of version control for all your projects, no matter the size.

.gitignore 一些不需要git版本管理的文件和目录

  1. venv/
  2. *.pyc
  3. __pycache__/
  4. instance/
  5. .pytest_cache/
  6. .coverage
  7. htmlcov/
  8. dist/
  9. build/
  10. *.egg-info/

Hello World

  1. # hello.py
  2. from flask import Flask
  3. app = Flask(__name__)
  4. @app.route('/') # 路由
  5. def sayhello():
  6. return "Flask Here!"
  7. if __name__ =='__main__':
  8. app.run()

必须在项目中导入Flask模块。Flask类的一个对象是我们的WSGI应用程序。
Flask构造函数使用当前模块(name 的名称作为参数。
Flask类的route()函数是一个装饰器,它告诉应用程序哪个URL应该调用相关的函数。

  1. (base) root@3f4f62e00e25:/home/ay/Flask# /opt/conda/bin/python /home/ay/Flask/app/hello.py
  2. * Serving Flask app "hello" (lazy loading)
  3. * Environment: production
  4. WARNING: This is a development server. Do not use it in a production deployment.
  5. Use a production WSGI server instead.
  6. * Debug mode: off
  7. * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

在最新的flask版本中建议使用如下启动方式

  1. (base) FlaskE git:(master) export FLASK_APP=Hello.py
  2. (base) FlaskE git:(master) flask run

调试器

报错信息显示到前端页面。

  1. export FLASK_DEBUG=1