Python Flask 全流程全栈项目实战

176 阅读2分钟

download :Python Flask 全流程全栈项目实战

实战项目:使用Python Flask打造全栈Web应用

在本文中,我们将通过一个实际的项目来展示如何使用Python的Flask框架从头开始构建一个全栈Web应用。我们将涵盖项目的整体架构、技术选择、实现步骤以及一些关键的开发考虑点。

项目概述

我们的项目是一个简单的任务管理系统,用户可以注册账号、登录、创建任务、查看任务列表和编辑任务等。我们会使用以下技术栈:

  • 后端框架:Python Flask
  • 数据库:SQLite(轻量级的关系型数据库)
  • 前端框架:HTML、CSS、JavaScript(简单实现,重点在后端)

步骤一:项目初始化和环境设置

  1. 创建项目目录结构

    project/
    ├── app/
    │   ├── static/
    │   ├── templates/
    │   ├── __init__.py
    │   ├── models.py
    │   ├── views.py
    ├── db/
    ├── run.py
    ├── requirements.txt
    
    • app/目录用于存放应用的代码,static/存放静态资源,templates/存放HTML模板。
    • db/目录用于存放SQLite数据库文件。
    • run.py是启动应用的入口文件。
    • requirements.txt用于列出项目依赖的Python包。
  2. 设置虚拟环境和安装Flask

    bash
    $ python -m venv venv
    $ source venv/bin/activate  # 激活虚拟环境
    (venv) $ pip install Flask
    

步骤二:编写数据模型和数据库

  1. 定义数据模型 (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))
    
  2. 初始化数据库 (__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
    

步骤三:编写视图和路由

  1. 编写视图函数 (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)
    
    # 其他路由:注册、登录、创建任务、编辑任务等
    

步骤四:编写前端模板

  1. 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>
    

步骤五:启动应用程序

  1. 启动文件 (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)
    
  2. 运行应用程序

    bash
    (venv) $ python run.py
    

    访问 http://localhost:5000 可以看到应用程序运行的首页。

结论

通过这个项目,我们展示了如何使用Python Flask框架从头开始构建一个简单的全栈Web应用。我们涉及了项目的初始化、数据模型设计、数据库配置、视图函数编写以及前端模板的使用。虽然这个示例项目比较简单,但是涵盖了基本的Flask应用程序结构和开发流程,可以作为进一步学习和扩展的基础。在实际应用中,你可以根据需求进一步扩展功能,优化代码结构和性能。