download :Python Flask 全流程全栈项目实战
实战项目:使用Python Flask打造全栈Web应用
在本文中,我们将通过一个实际的项目来展示如何使用Python的Flask框架从头开始构建一个全栈Web应用。我们将涵盖项目的整体架构、技术选择、实现步骤以及一些关键的开发考虑点。
项目概述
我们的项目是一个简单的任务管理系统,用户可以注册账号、登录、创建任务、查看任务列表和编辑任务等。我们会使用以下技术栈:
- 后端框架:Python Flask
- 数据库:SQLite(轻量级的关系型数据库)
- 前端框架:HTML、CSS、JavaScript(简单实现,重点在后端)
步骤一:项目初始化和环境设置
-
创建项目目录结构:
project/ ├── app/ │ ├── static/ │ ├── templates/ │ ├── __init__.py │ ├── models.py │ ├── views.py ├── db/ ├── run.py ├── requirements.txtapp/目录用于存放应用的代码,static/存放静态资源,templates/存放HTML模板。db/目录用于存放SQLite数据库文件。run.py是启动应用的入口文件。requirements.txt用于列出项目依赖的Python包。
-
设置虚拟环境和安装Flask:
bash $ python -m venv venv $ source venv/bin/activate # 激活虚拟环境 (venv) $ pip install Flask
步骤二:编写数据模型和数据库
-
定义数据模型 (
models.py):python from flask_sqlalchemy import SQLAlchemy from datetime import datetime db = SQLAlchemy() class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(50), unique=True, nullable=False) password = db.Column(db.String(50), nullable=False) class Task(db.Model): id = db.Column(db.Integer, primary_key=True) title = db.Column(db.String(100), nullable=False) description = db.Column(db.Text, nullable=True) created_at = db.Column(db.DateTime, default=datetime.utcnow) user_id = db.Column(db.Integer, db.ForeignKey('user.id'), nullable=False) user = db.relationship('User', backref=db.backref('tasks', lazy=True)) -
初始化数据库 (
__init__.py):python from flask import Flask from flask_sqlalchemy import SQLAlchemy db = SQLAlchemy() def create_app(): app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///../db/tasks.db' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db.init_app(app) from .views import main app.register_blueprint(main) return app
步骤三:编写视图和路由
-
编写视图函数 (
views.py):python from flask import Blueprint, render_template, redirect, url_for from .models import db, User, Task main = Blueprint('main', __name__) @main.route('/') def index(): tasks = Task.query.all() return render_template('index.html', tasks=tasks) @main.route('/task/<int:task_id>') def view_task(task_id): task = Task.query.get_or_404(task_id) return render_template('task.html', task=task) # 其他路由:注册、登录、创建任务、编辑任务等
步骤四:编写前端模板
-
HTML模板 (
templates/index.html,templates/task.html):html <!-- templates/index.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Task Manager</title> </head> <body> <h1>Task List</h1> <ul> {% for task in tasks %} <li><a href="{{ url_for('main.view_task', task_id=task.id) }}">{{ task.title }}</a></li> {% endfor %} </ul> </body> </html> <!-- templates/task.html --> <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>{{ task.title }}</title> </head> <body> <h1>{{ task.title }}</h1> <p>{{ task.description }}</p> <p>Created at: {{ task.created_at }}</p> <a href="{{ url_for('main.index') }}">Back to Task List</a> </body> </html>
步骤五:启动应用程序
-
启动文件 (
run.py):python from app import create_app, db from app.models import User, Task app = create_app() if __name__ == '__main__': app.run(debug=True) -
运行应用程序:
bash (venv) $ python run.py访问
http://localhost:5000可以看到应用程序运行的首页。
结论
通过这个项目,我们展示了如何使用Python Flask框架从头开始构建一个简单的全栈Web应用。我们涉及了项目的初始化、数据模型设计、数据库配置、视图函数编写以及前端模板的使用。虽然这个示例项目比较简单,但是涵盖了基本的Flask应用程序结构和开发流程,可以作为进一步学习和扩展的基础。在实际应用中,你可以根据需求进一步扩展功能,优化代码结构和性能。