用flask框架完成注册登录功能的实现
时间: 2024-05-04 22:19:00 浏览: 15
首先需要安装 Flask 和 Flask-MySQLdb 模块来实现数据库连接和操作,可以使用以下命令进行安装:
```
pip install Flask Flask-MySQLdb
```
接下来,我们可以创建一个名为 `app.py` 的文件,实现注册和登录功能的路由。
```python
from flask import Flask, render_template, request, redirect, session
from flask_mysqldb import MySQL
app = Flask(__name__)
app.secret_key = "secret_key"
# MySQL 配置
app.config['MYSQL_HOST'] = 'localhost'
app.config['MYSQL_USER'] = 'root'
app.config['MYSQL_PASSWORD'] = 'password'
app.config['MYSQL_DB'] = 'mydatabase'
mysql = MySQL(app)
# 注册页面
@app.route('/signup', methods=['GET', 'POST'])
def signup():
if request.method == 'POST':
# 获取表单数据
name = request.form['name']
email = request.form['email']
password = request.form['password']
# 判断是否已经存在该用户
cur = mysql.connection.cursor()
cur.execute("SELECT * FROM users WHERE email = %s", (email,))
user = cur.fetchone()
if user:
message = "该邮箱已经被注册过了!"
return render_template('signup.html', message=message)
else:
# 插入用户数据
cur.execute("INSERT INTO users (name, email, password) VALUES (%s, %s, %s)", (name, email, password))
mysql.connection.commit()
message = "注册成功!"
return render_template('signup.html', message=message)
else:
return render_template('signup.html')
# 登录页面
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
# 获取表单数据
email = request.form['email']
password = request.form['password']
# 查询用户数据
cur = mysql.connection.cursor()
cur.execute("SELECT * FROM users WHERE email = %s AND password = %s", (email, password))
user = cur.fetchone()
if user:
# 登录成功,设置 session
session['user_id'] = user[0]
session['user_name'] = user[1]
return redirect('/')
else:
message = "邮箱或密码错误!"
return render_template('login.html', message=message)
else:
return render_template('login.html')
# 退出登录
@app.route('/logout')
def logout():
# 删除 session
session.pop('user_id', None)
session.pop('user_name', None)
return redirect('/')
if __name__ == '__main__':
app.run(debug=True)
```
在上面的代码中,我们定义了 `/signup` 和 `/login` 两个路由来分别实现注册和登录功能。其中,`/signup` 路由用于展示注册页面和处理注册表单,`/login` 路由用于展示登录页面和处理登录表单。
在注册表单提交时,我们首先判断该邮箱是否已经被注册过了,如果已经注册过了,则返回错误信息;否则,将用户数据插入到 MySQL 数据库中。在登录表单提交时,我们查询数据库中是否存在该用户,如果存在,则设置 session 并跳转到首页;否则,返回错误信息。
我们还定义了一个 `/logout` 路由来实现退出登录功能,该路由会删除 session 并跳转到首页。
最后,在 `if __name__ == '__main__':` 下面加入以下代码来启动 Flask 应用程序:
```python
if __name__ == '__main__':
app.run(debug=True)
```
在命令行中运行以下命令来启动 Flask 应用程序:
```
python app.py
```
然后在浏览器中输入 `http://localhost:5000/signup` 或 `http://localhost:5000/login` 来访问注册和登录页面。