简介和创建
简介
Flask是一个使用Python编写的轻量级Web应用框架。它基于Werkzeug WSGI工具包和Jinja2模板引擎,旨在提供一个简单而灵活的核心,让开发者能够快速构建各类Web应用。Flask不会对特定的数据库、表单验证或任何其他功能做强制要求,而是提供了可自由选择的扩展支持,这使得开发者能够根据项目需求,高度自定义应用结构和功能。
Flask 特点
-
1. 微框架:Flask本身只保持最小的核心功能,如请求-响应周期处理、路由和模板渲染,非常适合小型项目或作为API服务器。
-
2. 灵活性高:由于其轻量和模块化设计,Flask允许开发者根据需要选择适合项目的库和工具,而不是预设一切。
-
3. 易学易用:对于初学者来说,Flask的学习曲线相对较低,是开始学习Web开发的一个很好的选择。
-
4. 强大的扩展系统:虽然Flask核心简单,但通过其丰富的扩展库,可以轻松添加如数据库集成(SQLAlchemy)、表单处理(WTForms)、用户认证(Flask-Login)等复杂功能。
-
5. 适用于快速原型开发:由于其轻便性,Flask特别适合快速创建项目原型或进行MVP(最小可行性产品)开发。
创建虚拟环境
-
• 先打开cmd
Windows+R
输入cmd或powershell
-
• 安装
virtualenv
(windows操作系统)
pip install virtualenv virtualenvwrapper-win
-
•
workon
查看虚拟环境
workon
-
•
mkvirtualenv
创建新的虚拟环境
mkvirtualenv 项目名称
-
•
rmvirtualenv
删除虚拟环境
rmvirtualenv 项目名称
-
• 进入虚拟环境
workon 项目名称
-
• PyCharm专业版也可创建
创建第一个Flask应用
创建Flask应用后,会有三个static
,templates
,app.py
-
•
static
:这个目录用于存放所有的静态文件,比如 CSS、JavaScript、图像等。 -
•
templates
:存放应用的模板文件,通常是 HTML 文件,但也可以是 Jinja2 模板引擎支持的其他格式。 -
•
app.py
:这是 Flask 应用的主要入口文件。
Hello World
app.py
# 导入 Flask 类,这是构建 Flask 应用程序的基础
from flask import Flask
# 创建 Flask 应用实例,__name__ 作为参数传入,用于定位资源文件(如模板和静态文件)
app = Flask(__name__)
# 使用 @app.route 装饰器定义路由,此处 '/' 表示应用的根 URL
@app.route('/')
# 定义一个名为 hello_world 的视图函数,当访问应用根 URL 时被调用
def hello_world(): # put application's code here
# 函数返回简单的字符串 "Hello World!" 作为响应内容
return 'Hello World!'
# 检查是否直接运行此脚本(而非作为模块导入),如果是,则启动 Flask 开发服务器
if __name__ == '__main__':
# 调用 app.run() 方法启动 Web 服务器,默认会在本地的 5000 端口运行
app.run()
run
启动参数详解
在 Flask 中,app.run()
方法用于启动开发服务器,默认情况下,它会快速启动一个服务器供开发和测试使用。app.run()
方法接受多个参数来定制服务器的行为,以下是一些常用的参数及其说明:
-
1. host (
string
):指定服务器监听的 IP 地址。默认值是'127.0.0.1'
,这意味着服务器只接受来自本地的连接请求。若要让服务器公开可由外部访问,可以设置为'0.0.0.0'
。 -
2. port (
int
):指定服务器监听的端口号。默认值是5000
。可以根据需要更改端口,例如,如果默认端口已被占用,可以设置为8000
。 -
3. debug (
bool
):开启或关闭调试模式。默认是False
。如果设置为True
,服务器将在代码修改后自动重载,并在遇到错误时提供详细的堆栈跟踪信息,这对于开发阶段非常有用,但出于安全考虑,生产环境中应设为False
。 -
4. use_reloader (
bool
):默认为True
,当debug=True
时,自动重启服务器以便于代码更改生效。如果在某些复杂环境下(比如使用了多进程或多线程),可能需要关闭重载器,设为False
。 -
5. threaded (
bool
):是否使用多线程模式。默认是False
,意味着服务器在接收到请求时会阻塞直到处理完该请求。设置为True
允许服务器同时处理多个请求,这对于并发请求处理很有帮助。 -
6. ssl_context (
None
或tuple
):如果需要使用 HTTPS,可以通过这个参数指定 SSL/TLS 上下文。通常是一个包含证书和私钥文件路径的元组,如('cert.pem', 'key.pem')
。
示例代码,展示如何使用这些参数:
if __name__ == '__main__':
app.run(
host='0.0.0.0', # 允许外部访问
port=8000, # 更改默认端口为8000
debug=True, # 开启调试模式
threaded=True, # 启用多线程
use_reloader=False # 假设在某种特殊环境下,关闭自动重载
)
通过调整这些参数,你可以根据实际需求定制 Flask 开发服务器的行为。但需要注意的是,app.run()
用于开发环境,对于生产部署,推荐使用更强大的 WSGI 服务器,如 Gunicorn 或 uWSGI,配合 Nginx 等反向代理服务器,以提高性能和安全性。
原文始发于微信公众号(索隆程序员):Flask入门-创建应用
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/288905.html