返回

用Flask和Python建立前后端分离的数据库系统,实现轻松的数据管理

后端

全栈开发:使用 Python 和 Flask 构建动态 Web 应用程序

揭开全栈世界的面纱

全栈开发是当今数字领域备受追捧的技能,它赋予开发者从前端界面到后端逻辑的全面开发能力,使他们能够独立完成 Web 应用程序的构建。为了满足这种需求,我们将踏上一个全栈开发之旅,使用 Python 和 Flask 构建一个用户管理系统,让你亲身体验前后端分离和数据库操作的魅力。

前后端分离:分而治之

前后端分离是一个巧妙的策略,将 Web 应用程序的视觉呈现(前端)与数据处理和业务逻辑(后端)分开。前端负责用户界面和交互,提供流畅的用户体验;而后端则专注于数据管理和应用程序的核心功能。

数据库操作:数据的基石

数据库是 Web 应用程序的基石,存储和管理着宝贵的用户数据。在我们的项目中,我们将利用 MySQL,一个流行且易于使用的关系型数据库,来安全可靠地存储用户信息。

构建用户管理系统

现在,让我们把理论付诸实践,创建一个用户管理系统。这个系统将包含用户注册、登录、修改和删除等基本功能。

from flask import Flask, render_template, request, redirect, url_for
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/database_name'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(255), unique=True)
    password = db.Column(db.String(255))
    email = db.Column(db.String(255))

@app.route('/')
def index():
    users = User.query.all()
    return render_template('index.html', users=users)

@app.route('/register', methods=['GET', 'POST'])
def register():
    if request.method == 'POST':
        username = request.form['username']
        password = request.form['password']
        email = request.form['email']

        user = User(username=username, password=password, email=email)
        db.session.add(user)
        db.session.commit()

        return redirect(url_for('index'))

    return render_template('register.html')

@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:
            return redirect(url_for('index'))

        return render_template('login.html', error="Invalid credentials")

    return render_template('login.html')

@app.route('/edit/<int:id>', methods=['GET', 'POST'])
def edit(id):
    user = User.query.get(id)
    if request.method == 'POST':
        user.username = request.form['username']
        user.password = request.form['password']
        user.email = request.form['email']

        db.session.commit()
        return redirect(url_for('index'))

    return render_template('edit.html', user=user)

@app.route('/delete/<int:id>')
def delete(id):
    user = User.query.get(id)
    db.session.delete(user)
    db.session.commit()

    return redirect(url_for('index'))

if __name__ == '__main__':
    app.run(debug=True)

部署和测试:让你的应用栩栩如生

为了让我们的用户管理系统焕发生机,我们需要将其部署到服务器上并进行彻底的测试。以下命令将启动 Flask 服务器:

flask run

然后,在浏览器中访问 http://127.0.0.1:5000 来见证你的杰作。

常见问题解答

  1. 如何创建数据库表?

    CREATE TABLE userinfo (
      id INT NOT NULL AUTO_INCREMENT,
      username VARCHAR(255) NOT NULL,
      password VARCHAR(255) NOT NULL,
      email VARCHAR(255) NOT NULL,
      PRIMARY KEY (id)
    );
    
  2. 如何使用 Flask 框架?

    from flask import Flask, render_template, request, redirect, url_for
    app = Flask(__name__)
    
  3. 如何连接到 MySQL 数据库?

    from flask_sqlalchemy import SQLAlchemy
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql://username:password@localhost/database_name'
    db = SQLAlchemy(app)
    
  4. 如何使用 SQLAlchemy 操作数据库?

    user = User.query.get(id)
    user.username = 'new_username'
    db.session.commit()
    
  5. 如何部署 Flask 应用程序?

    flask run