Чтобы подключиться к базе данных и реализовать функцию входа в приложение Flask, вы можете выполнить следующие действия:
- Установите необходимые расширения: Установите библиотеки Flask и SQLAlchemy через pip с помощью следующих команд:
pip install flask sqlalchemy
- Импортируйте необходимые модули: Импортируйте необходимые модули в файл приложения 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
- Настройте подключение к базе данных: задайте информацию о подключении к базе данных в файле приложения Flask и создайте объект
SQLAlchemy
:
app = Flask(__name__)
# 配置数据库连接路径
app.config['SQLALCHEMY_DATABASE_URI'] = '数据库连接地址'
# 创建SQLAlchemy对象
db = SQLAlchemy(app)
- Создайте модель пользователя: определите класс модели пользователя, который представляет информацию о пользователе, хранящуюся в базе данных. Например, создайте
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)
- Создайте таблицу базы данных: перед запуском приложения используйте следующий код для создания таблицы базы данных:
db.create_all()
- Напишите функцию просмотра: используйте
@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')
- Создайте файл шаблона 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>
- Запустите приложение: добавьте следующий код в конец файла кода, чтобы запустить приложение:
if __name__ == '__main__':
app.run()
Выполнив описанные выше шаги, вы можете использовать Flask для подключения к базе данных и реализовать простую функцию входа в систему. Обратите внимание, что хеш-функция пароля используется в части аутентификации пользователя функции представления для защиты пароля. Чтобы завершить эту функциональность, вам, возможно, потребуется дополнительно рассмотреть логику для таких вещей, как регистрация пользователей, аутентификация и управление сеансами.