1. 首页 > IT综合教程 > 正文

it教程FG177-Python Web开发基础

1. Python Web开发概述

Python Web开发是使用Python语言构建Web应用程序的过程。Python拥有多种Web框架,如Flask、Django、FastAPI等,这些框架简化了Web应用的开发过程。Python Web应用广泛应用于各种场景,包括企业级应用、API服务、数据可视化等。更多学习教程www.fgedu.net.cn

生产环境风哥建议:根据项目需求选择合适的Web框架,小型项目可以选择Flask,大型项目可以选择Django。

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的基本结构包括应用实例、路由、视图函数等。

# 第一个Flask应用 (app.py)
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!

风哥风哥提示:在开发环境中,可以设置debug=True启用调试模式,这样修改代码后会自动重启应用。

5. Flask模板

Flask使用Jinja2模板引擎渲染HTML页面,支持模板继承、变量、过滤器等功能。

# 创建templates目录
# 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

# 创建表单模板 (templates/form.html)

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

# 安装Flask-SQLAlchemy
# 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扩展实现用户认证功能。

# 安装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

# 创建requirements.txt
# 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: 单文件框架,适合小型应用

# 选择框架的考虑因素
# 项目规模和复杂度
# 开发速度要求
# 性能要求
# 团队熟悉度
# 社区支持

生产环境风哥建议:在生产环境中,使用gunicorn或uWSGI作为WSGI服务器,使用nginx作为反向代理,配置SSL证书启用HTTPS。

风哥风哥提示:选择合适的Web框架是Python Web开发的重要决策,需要根据项目需求和团队情况综合考虑。

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息