1. Python Web开发概述
Python Web开发是使用Python语言构建Web应用程序的过程。Python拥有多种Web框架,如Flask、Django、FastAPI等,这些框架简化了Web应用的开发过程。Python Web应用广泛应用于各种场景,包括企业级应用、API服务、数据可视化等。更多学习教程www.fgedu.net.cn
2. Flask框架简介
Flask是一个轻量级的Python Web框架,以其简洁、灵活的特点而闻名。它基于Werkzeug WSGI工具包和Jinja2模板引擎,提供了基本的Web开发功能,同时允许开发者根据需要扩展功能。学习交流加群风哥微信: itpux-com
3. Flask环境搭建
搭建Flask开发环境需要安装Python和Flask库。
# python3 -m venv venv
# 激活虚拟环境
# Linux/Mac
# source venv/bin/activate
# Windows
# venv\Scripts\activate
# 安装Flask
# pip install Flask
# 验证安装
# python -c “import flask; print(flask.__version__)”
2.0.1
4. Flask基础
Flask的基本结构包括应用实例、路由、视图函数等。
from flask import Flask
app = Flask(__name__)
@app.route(‘/’)
def hello():
return ‘Hello, Flask!’
if __name__ == ‘__main__’:
app.run(debug=True)
# 运行应用
# python app.py
* Running on http://127.0.0.1:5000/
# 访问应用
# curl http://fgedudb:5000/
Hello, Flask!
5. Flask模板
Flask使用Jinja2模板引擎渲染HTML页面,支持模板继承、变量、过滤器等功能。
# mkdir templates
# 创建模板文件 (templates/index.html)
Hello, {{ name }}!
Current time: {{ current_time }}
# 修改app.py
from flask import Flask, render_template
from datetime import datetime
app = Flask(__name__)
@app.route(‘/’)
def index():
return render_template(‘index.html’, name=’World’, current_time=datetime.now())
if __name__ == ‘__main__’:
app.run(debug=True)
6. Flask表单处理
Flask可以处理HTML表单提交,使用request对象获取表单数据。学习交流加群风哥QQ113257174
Login Form
{% if message %}
{{ message }}
{% endif %}
# 修改app.py
from flask import Flask, render_template, request
app = Flask(__name__)
@app.route(‘/form’, methods=[‘GET’, ‘POST’])
def form():
if request.method == ‘POST’:
username = request.form[‘username’]
password = request.form[‘password’]
if username == ‘admin’ and password == ‘password’:
return render_template(‘form.html’, message=’Login successful!’)
else:
return render_template(‘form.html’, message=’Login failed!’)
return render_template(‘form.html’)
if __name__ == ‘__main__’:
app.run(debug=True)
7. Flask数据库操作
Flask可以通过扩展库与数据库交互,如Flask-SQLAlchemy。更多学习教程公众号风哥教程itpux_com
# pip install Flask-SQLAlchemy
# 修改app.py
from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘sqlite:///test.db’
app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS’] = False
db = SQLAlchemy(app)
# 定义模型
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(80), nullable=False)
email = db.Column(db.String(120), unique=True, nullable=False)
def __repr__(self):
return f’
# 创建数据库
db.create_all()
@app.route(‘/users’)
def users():
users = User.query.all()
return render_template(‘users.html’, users=users)
@app.route(‘/add_user’, methods=[‘GET’, ‘POST’])
def add_user():
if request.method == ‘POST’:
name = request.form[‘name’]
email = request.form[’email’]
new_user = User(name=name, email=email)
db.session.add(new_user)
db.session.commit()
return redirect(url_for(‘users’))
return render_template(‘add_user.html’)
# 创建模板文件
# templates/users.html
# templates/add_user.html
8. Flask认证
Flask可以使用Flask-Login扩展实现用户认证功能。
# pip install Flask-Login
# 修改app.py
from flask import Flask, render_template, request, redirect, url_for
from flask_login import LoginManager, UserMixin, login_user, login_required, logout_user, current_user
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__)
app.config[‘SECRET_KEY’] = ‘your-secret-key’
app.config[‘SQLALCHEMY_DATABASE_URI’] = ‘sqlite:///test.db’
app.config[‘SQLALCHEMY_TRACK_MODIFICATIONS’] = False
db = SQLAlchemy(app)
# 初始化LoginManager
login_manager = LoginManager()
login_manager.init_app(app)
# 定义用户模型
class User(UserMixin, db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(80), unique=True, nullable=False)
password = db.Column(db.String(120), nullable=False)
# 加载用户
@login_manager.user_loader
def load_user(user_id):
return User.query.get(int(user_id))
# 创建数据库
db.create_all()
@app.route(‘/login’, methods=[‘GET’, ‘POST’])
def login():
if request.method == ‘POST’:
username = request.form[‘username’]
password = request.form[‘password’]
user = User.query.filter_by(username=username).first()
if user and user.password == password: # 实际应用中应该使用密码哈希
login_user(user)
return redirect(url_for(‘dashboard’))
return render_template(‘login.html’)
@app.route(‘/dashboard’)
@login_required
def dashboard():
return f’Hello, {current_user.username}! This is your dashboard.’
@app.route(‘/logout’)
@login_required
def logout():
logout_user()
return redirect(url_for(‘login’))
9. Flask应用部署
Flask应用可以部署到各种环境,如Heroku、AWS、Docker等。author:www.itpux.com
# pip freeze > requirements.txt
# 创建Procfile (for Heroku)
web: gunicorn app:app
# 安装gunicorn
# pip install gunicorn
# 本地运行gunicorn
# gunicorn app:app
# Docker部署
# 创建Dockerfile
FROM python:3.9
WORKDIR /app
COPY . .
RUN pip install -r requirements.txt
EXPOSE 8000
CMD [“gunicorn”, “app:app”, “–bind”, “0.0.0.0:8000”]
# 构建Docker镜像
# docker build -t flask-app .
# 运行Docker容器
# docker run -p 8000:8000 flask-app
10. Python Web框架对比
Python有多种Web框架,各有优缺点,适合不同的应用场景。
# Flask: 轻量级,灵活,适合小型项目和API
# Django: 全功能,适合大型项目,内置ORM、Admin等
# FastAPI: 高性能,自动生成API文档,适合构建API
# Pyramid: 可扩展性强,适合各种规模的项目
# Bottle: 单文件框架,适合小型应用
# 选择框架的考虑因素
# 项目规模和复杂度
# 开发速度要求
# 性能要求
# 团队熟悉度
# 社区支持
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
