文章目录
- 从零开始:如何搭建你的第一个简单的Flask网站
-
- 前言
- 一、什么是Flask?
- 二、环境准备
-
- [2.1 安装Python](#2.1 安装Python)
- [2.2 创建项目目录](#2.2 创建项目目录)
- [2.3 创建虚拟环境(推荐)](#2.3 创建虚拟环境(推荐))
- 三、安装Flask
- 四、创建第一个Flask应用
-
- [4.1 创建主程序文件](#4.1 创建主程序文件)
- [4.2 运行应用](#4.2 运行应用)
- [4.3 访问网站](#4.3 访问网站)
- 五、添加更多路由
- 六、使用模板(Templates)
-
- [6.1 创建模板目录](#6.1 创建模板目录)
- [6.2 创建基础模板](#6.2 创建基础模板)
- [6.3 创建具体页面模板](#6.3 创建具体页面模板)
- [6.4 更新app.py使用模板](#6.4 更新app.py使用模板)
- 七、添加动态内容
- 八、处理表单提交
-
- [8.1 更新contact.html](#8.1 更新contact.html)
- [8.2 更新app.py处理表单](#8.2 更新app.py处理表单)
- [8.3 在base.html中显示flash消息](#8.3 在base.html中显示flash消息)
- 九、项目结构
-
- [9.1 创建requirements.txt](#9.1 创建requirements.txt)
- 十、部署你的Flask应用
-
- [10.1 本地运行](#10.1 本地运行)
- [10.2 生产环境部署](#10.2 生产环境部署)
- 十一、常见问题
-
- [11.1 端口被占用](#11.1 端口被占用)
- [11.2 模板找不到](#11.2 模板找不到)
- [11.3 修改代码后没有变化](#11.3 修改代码后没有变化)
- 十二、下一步学习
- 十三、完整代码示例
- 十四、总结
从零开始:如何搭建你的第一个简单的Flask网站
前言
Flask是Python中最流行的轻量级Web框架之一,它简单、灵活,非常适合初学者入门Web开发。本文将手把手教你从零开始搭建你的第一个Flask网站,即使你之前没有任何Web开发经验,也能跟着教程完成。
一、什么是Flask?
Flask是一个用Python编写的Web应用框架,它的特点是:
- 轻量级:核心功能简单,易于理解
- 灵活:可以根据需求选择扩展
- 易学:代码简洁,学习曲线平缓
- 强大:可以构建从小型应用到大型企业级应用
二、环境准备
2.1 安装Python
首先确保你的电脑上已经安装了Python。Flask需要Python 3.6或更高版本。
检查Python版本:
bash
python --version
# 或
python3 --version
如果没有安装Python,请访问 Python官网 下载并安装。
2.2 创建项目目录
创建一个文件夹来存放你的Flask项目:
bash
mkdir my_flask_app
cd my_flask_app
2.3 创建虚拟环境(推荐)
使用虚拟环境可以避免不同项目之间的依赖冲突,这是一个好习惯。
Windows系统:
bash
python -m venv venv
venv\Scripts\activate
Linux/Mac系统:
bash
python3 -m venv venv
source venv/bin/activate
激活虚拟环境后,你的命令行提示符前面会显示 (venv)。
三、安装Flask
在激活的虚拟环境中,使用pip安装Flask:
bash
pip install flask
安装完成后,可以验证安装:
bash
python -c "import flask; print(flask.__version__)"
四、创建第一个Flask应用
4.1 创建主程序文件
在项目目录下创建一个名为 app.py 的文件:
python
from flask import Flask
# 创建Flask应用实例
app = Flask(__name__)
# 定义路由和视图函数
@app.route('/')
def hello():
return 'Hello, Flask!这是我的第一个Flask网站!'
# 运行应用
if __name__ == '__main__':
app.run(debug=True)
代码解释:
from flask import Flask:导入Flask类app = Flask(__name__):创建Flask应用实例@app.route('/'):装饰器,定义URL路由def hello():视图函数,处理请求并返回响应app.run(debug=True):运行应用,debug=True开启调试模式
4.2 运行应用
在命令行中运行:
bash
python app.py
你会看到类似以下的输出:
* Running on http://127.0.0.1:5000
* Debug mode: on
4.3 访问网站
打开浏览器,访问 http://127.0.0.1:5000 或 http://localhost:5000,你应该能看到 "Hello, Flask!" 的页面!
🎉 恭喜!你已经成功创建了第一个Flask应用!
五、添加更多路由
让我们添加更多的页面来丰富你的网站:
python
from flask import Flask
app = Flask(__name__)
@app.route('/')
def index():
return '''
欢迎来到我的Flask网站!
关于我
联系我
'''
@app.route('/about')
def about():
return '''
关于我
这是一个使用Flask搭建的简单网站。
返回首页
'''
@app.route('/contact')
def contact():
return '''
联系我
邮箱:example@email.com
返回首页
'''
if __name__ == '__main__':
app.run(debug=True)
现在你的网站有三个页面了:
- 首页:
http://127.0.0.1:5000/ - 关于页面:
http://127.0.0.1:5000/about - 联系页面:
http://127.0.0.1:5000/contact
六、使用模板(Templates)
直接在代码中写HTML不太优雅,Flask支持使用模板文件。让我们改进代码:
6.1 创建模板目录
在项目目录下创建 templates 文件夹:
bash
mkdir templates
6.2 创建基础模板
创建 templates/base.html:
html
{% block title %}我的Flask网站{% endblock %}
body {
font-family: Arial, sans-serif;
max-width: 800px;
margin: 50px auto;
padding: 20px;
background-color: #f5f5f5;
}
nav {
background-color: #333;
padding: 10px;
margin-bottom: 20px;
}
nav a {
color: white;
text-decoration: none;
margin-right: 20px;
}
nav a:hover {
text-decoration: underline;
}
.content {
background-color: white;
padding: 30px;
border-radius: 5px;
box-shadow: 0 2px 5px rgba(0,0,0,0.1);
}
首页
关于
联系
{% block content %}{% endblock %}
6.3 创建具体页面模板
创建 templates/index.html:
html
{% extends "base.html" %}
{% block title %}首页 - 我的Flask网站{% endblock %}
{% block content %}
欢迎来到我的Flask网站!
这是使用Flask框架搭建的第一个网站。
Flask是一个轻量级的Python Web框架,非常适合快速开发Web应用。
{% endblock %}
创建 templates/about.html:
html
{% extends "base.html" %}
{% block title %}关于 - 我的Flask网站{% endblock %}
{% block content %}
关于我
这是一个使用Flask搭建的简单网站示例。
Flask的特点:
轻量级,易于学习
灵活,可以根据需求扩展
强大的社区支持
{% endblock %}
创建 templates/contact.html:
html
{% extends "base.html" %}
{% block title %}联系 - 我的Flask网站{% endblock %}
{% block content %}
联系我
如果你有任何问题,欢迎联系我:
邮箱:example@email.com
GitHub:github.com/yourusername
{% endblock %}
6.4 更新app.py使用模板
python
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
@app.route('/about')
def about():
return render_template('about.html')
@app.route('/contact')
def contact():
return render_template('contact.html')
if __name__ == '__main__':
app.run(debug=True)
关键变化:
- 导入
render_template:用于渲染模板 - 使用
render_template():返回渲染后的HTML
现在你的网站看起来更专业了!
七、添加动态内容
让我们添加一些动态功能,比如显示当前时间:
python
from flask import Flask, render_template
from datetime import datetime
app = Flask(__name__)
@app.route('/')
def index():
current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
return render_template('index.html', time=current_time)
@app.route('/about')
def about():
return render_template('about.html')
@app.route('/contact')
def contact():
return render_template('contact.html')
if __name__ == '__main__':
app.run(debug=True)
更新 templates/index.html:
html
{% extends "base.html" %}
{% block title %}首页 - 我的Flask网站{% endblock %}
{% block content %}
欢迎来到我的Flask网站!
这是使用Flask框架搭建的第一个网站。
当前时间:{{ time }}
Flask是一个轻量级的Python Web框架,非常适合快速开发Web应用。
{% endblock %}
八、处理表单提交
让我们添加一个简单的联系表单:
8.1 更新contact.html
html
{% extends "base.html" %}
{% block title %}联系 - 我的Flask网站{% endblock %}
{% block content %}
联系我
姓名:
邮箱:
留言:
提交
{% endblock %}
8.2 更新app.py处理表单
python
from flask import Flask, render_template, request, flash, redirect, url_for
from datetime import datetime
app = Flask(__name__)
app.secret_key = 'your-secret-key-here' # 用于flash消息
@app.route('/')
def index():
current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
return render_template('index.html', time=current_time)
@app.route('/about')
def about():
return render_template('about.html')
@app.route('/contact', methods=['GET', 'POST'])
def contact():
if request.method == 'POST':
name = request.form.get('name')
email = request.form.get('email')
message = request.form.get('message')
# 这里可以保存到数据库或发送邮件
flash(f'谢谢 {name},你的留言已收到!')
return redirect(url_for('contact'))
return render_template('contact.html')
if __name__ == '__main__':
app.run(debug=True)
8.3 在base.html中显示flash消息
在 base.html 的content块之前添加:
html
{% with messages = get_flashed_messages() %}
{% if messages %}
{% for message in messages %}
{{ message }}
{% endfor %}
{% endif %}
{% endwith %}
{% block content %}{% endblock %}
九、项目结构
现在你的项目结构应该是这样的:
my_flask_app/
├── venv/ # 虚拟环境(不需要提交到Git)
├── templates/ # 模板文件夹
│ ├── base.html
│ ├── index.html
│ ├── about.html
│ └── contact.html
├── app.py # 主程序文件
└── requirements.txt # 依赖列表(可选)
9.1 创建requirements.txt
bash
pip freeze > requirements.txt
这样其他人可以通过 pip install -r requirements.txt 安装所有依赖。
十、部署你的Flask应用
10.1 本地运行
你已经知道如何本地运行了:
bash
python app.py
10.2 生产环境部署
注意: app.run(debug=True) 只适用于开发环境,不要在生产环境使用!
生产环境可以使用:
-
Gunicorn(Linux/Mac):
bashpip install gunicorn gunicorn -w 4 -b 0.0.0.0:5000 app:app -
Waitress(Windows):
bashpip install waitress waitress-serve --host=0.0.0.0 --port=5000 app:app -
云平台部署:
- Heroku
- PythonAnywhere
- 阿里云/腾讯云等
十一、常见问题
11.1 端口被占用
如果5000端口被占用,可以修改端口:
python
if __name__ == '__main__':
app.run(debug=True, port=8080)
11.2 模板找不到
确保:
templates文件夹在项目根目录- 文件夹名称拼写正确
- 模板文件在
templates文件夹内
11.3 修改代码后没有变化
确保:
- 开启了
debug=True - 保存了文件
- 如果还是不行,重启服务器
十二、下一步学习
现在你已经掌握了Flask的基础,可以继续学习:
- 数据库集成:使用SQLAlchemy连接数据库
- 用户认证:实现登录、注册功能
- RESTful API:使用Flask构建API
- 文件上传:处理文件上传功能
- 部署:将应用部署到服务器
推荐资源:
十三、完整代码示例
app.py(完整版)
python
from flask import Flask, render_template, request, flash, redirect, url_for
from datetime import datetime
app = Flask(__name__)
app.secret_key = 'your-secret-key-change-this-in-production'
@app.route('/')
def index():
current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
return render_template('index.html', time=current_time)
@app.route('/about')
def about():
return render_template('about.html')
@app.route('/contact', methods=['GET', 'POST'])
def contact():
if request.method == 'POST':
name = request.form.get('name')
email = request.form.get('email')
message = request.form.get('message')
# 在实际应用中,这里可以保存到数据库或发送邮件
print(f"收到来自 {name} ({email}) 的留言:{message}")
flash(f'谢谢 {name},你的留言已收到!我们会尽快回复。')
return redirect(url_for('contact'))
return render_template('contact.html')
if __name__ == '__main__':
app.run(debug=True, host='0.0.0.0', port=5000)
十四、总结
通过本教程,你已经学会了:
✅ 安装和配置Flask环境
✅ 创建基本的Flask应用
✅ 定义路由和视图函数
✅ 使用模板系统
✅ 处理表单提交
✅ 添加动态内容
关键要点:
- Flask是一个简单而强大的Web框架
- 使用虚拟环境管理依赖
- 模板系统让代码更清晰
- 调试模式有助于开发
- 生产环境需要不同的配置
实践建议:
- 多动手实践,修改代码看效果
- 尝试添加新功能
- 阅读Flask官方文档
- 查看其他Flask项目的代码
希望这个教程能帮助你开始Flask之旅!如果遇到问题,欢迎在评论区留言讨论。
相关资源:
标签: #Flask #Python #Web开发 #后端开发 #编程入门 #Python框架