📅  最后修改于: 2023-12-03 15:06:46.362000             🧑  作者: Mango
本项目使用 Flask 和 MySQL 构建一个简单的登录和注册系统。用户可以在网页上输入用户名和密码进行注册和登录。
在开始之前,你需要确保已经安装了 Python 3.7 和 MySQL 8.0,并创建了一个数据库用于存储用户信息。在本项目中,我们使用了 Flask-MySQLdb 扩展来连接数据库。
安装 Flask 和 MySQLdb:
pip install Flask
pip install Flask-MySQLdb
在 MySQL 中创建名为 users
的数据库,并创建一个名为 users
的表,用于存储用户信息。
CREATE TABLE users (
id INT(11) NOT NULL AUTO_INCREMENT,
username VARCHAR(50) NOT NULL,
password VARCHAR(50) NOT NULL,
PRIMARY KEY (id)
);
1.引入扩展和创建 Flask 应用对象
from flask import Flask, render_template, request, redirect, url_for
from flask_mysqldb import MySQL
app = Flask(__name__)
# MySQL 配置
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = '123456'
app.config['MYSQL_DB'] = 'users'
mysql = MySQL(app)
2.实现注册功能
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST' and 'username' in request.form and 'password' in request.form:
username = request.form['username']
password = request.form['password']
cur = mysql.connection.cursor()
cur.execute('SELECT * FROM users WHERE username = %s', (username,))
user = cur.fetchone()
if user:
error = '用户名已存在'
return render_template('register.html', error=error)
else:
cur.execute('INSERT INTO users(username, password) VALUES(%s, %s)', (username, password))
mysql.connection.commit()
success = '注册成功'
return render_template('register.html', success=success)
return render_template('register.html')
3.实现登录功能
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST' and 'username' in request.form and 'password' in request.form:
username = request.form['username']
password = request.form['password']
cur = mysql.connection.cursor()
cur.execute('SELECT * FROM users WHERE username = %s AND password = %s', (username, password))
user = cur.fetchone()
if user:
return redirect(url_for('home'))
else:
error = '用户名或密码不正确'
return render_template('login.html', error=error)
return render_template('login.html')
在项目目录下创建 templates
文件夹,在其中创建 login.html
和 register.html
两个模板,用于显示登录和注册页面。
login.html:
<!DOCTYPE html>
<html>
<head>
<title>登录</title>
</head>
<body>
{% if error %}
<p>{{ error }}</p>
{% endif %}
<h1>登录</h1>
<form action="{{ url_for('login') }}" method="POST">
<label for="username">用户名:</label>
<input type="text" id="username" name="username"><br><br>
<label for="password">密码:</label>
<input type="password" id="password" name="password"><br><br>
<input type="submit" name="submit" value="登录">
</form>
</body>
</html>
register.html:
<!DOCTYPE html>
<html>
<head>
<title>注册</title>
</head>
<body>
{% if error %}
<p>{{ error }}</p>
{% endif %}
{% if success %}
<p>{{ success }}</p>
{% endif %}
<h1>注册</h1>
<form action="{{ url_for('register') }}" method="POST">
<label for="username">用户名:</label>
<input type="text" id="username" name="username"><br><br>
<label for="password">密码:</label>
<input type="password" id="password" name="password"><br><br>
<input type="submit" name="submit" value="注册">
</form>
</body>
</html>
在控制台输入以下命令启动应用:
python app.py
打开浏览器,在 URL 中输入 http://localhost:5000/login
即可访问登录页面,输入 http://localhost:5000/register
访问注册页面。