flask 连接数据库实现登录

要在Flask应用程序中连接数据库并实现登录功能,您可以按照以下步骤进行操作:

  1. 安装必要的扩展:使用以下命令通过pip安装Flask和SQLAlchemy库:
pip install flask sqlalchemy
  1. 导入必要的模块:在您的Flask应用程序文件中导入必要的模块,包括Flask、SQLAlchemy和Werkzeug的密码哈希函数:
from flask import Flask, render_template, request, redirect
from flask_sqlalchemy import SQLAlchemy
from werkzeug.security import generate_password_hash, check_password_hash
  1. 配置数据库连接:在您的Flask应用程序文件中设置数据库连接信息,并创建一个SQLAlchemy对象:
app = Flask(__name__)

# 配置数据库连接路径
app.config['SQLALCHEMY_DATABASE_URI'] = '数据库连接地址'

# 创建SQLAlchemy对象
db = SQLAlchemy(app)
  1. 创建用户模型:定义一个用户模型类,表示存储在数据库中的用户信息。例如,创建一个名为User的模型类:
class User(db.Model):
    __tablename__ = 'users'

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(50), unique=True, nullable=False)
    password_hash = db.Column(db.String(128), nullable=False)

    def set_password(self, password):
        self.password_hash = generate_password_hash(password)

    def check_password(self, password):
        return check_password_hash(self.password_hash, password)
  1. 创建数据库表格:在应用启动之前,使用以下代码创建数据库表格:
db.create_all()
  1. 编写视图函数:使用@app.route装饰器定义登录页面的路由和对应的视图函数。视图函数将处理用户登录请求,进行验证并重定向到主页或错误提示页面:
@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.check_password(password):
            # 登录成功,重定向到主页或其他需要登录的页面
            return redirect('/')
        else:
            # 密码错误或用户不存在,显示错误提示
            error_message = '用户名或密码错误'
            return render_template('login.html', error_message=error_message)

    return render_template('login.html')
  1. 创建HTML模板文件:创建一个名为login.html的HTML模板文件,用于显示登录表单和错误提示信息。示例代码如下:
<!DOCTYPE html>
<html>
<head>
    <title>登录</title>
</head>
<body>
    <h1>登录</h1>
    {% if error_message %}
        <p>{
   
   { error_message }}</p>
    {% endif %}
    <form method="POST">
        <input type="text" name="username" placeholder="用户名" required><br><br>
        <input type="password" name="password" placeholder="密码" required><br><br>
        <input type="submit" value="登录">
    </form>
</body>
</html>
  1. 运行应用:在代码文件的末尾添加以下代码运行应用:
if __name__ == '__main__':
    app.run()

通过上述步骤,您可以使用Flask连接数据库并实现简单的登录功能。请注意,在视图函数中的用户验证部分使用了密码哈希函数来保护密码安全。为了完善该功能,您可能需要进一步考虑用户注册、身份验证和会话管理等方面的逻辑。

猜你喜欢

转载自blog.csdn.net/weixin_42499608/article/details/131297682