帮我写一个基于flask框架的用户登录系统
时间: 2024-01-30 15:04:09 浏览: 40
好的,下面是一个基于Flask框架的用户登录系统的示例代码:
```python
from flask import Flask, render_template, request, redirect, url_for, session
app = Flask(__name__)
app.secret_key = 'my_secret_key' # 设置session秘钥
# 假设用户信息保存在一个字典中
users = {
'Alice': '123456',
'Bob': 'abcdef',
'Charlie': 'xyz123'
}
@app.route('/')
def index():
if 'username' in session:
# 如果用户已登录,直接跳转到主页
return redirect(url_for('home'))
else:
# 如果用户未登录,跳转到登录页面
return redirect(url_for('login'))
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
if username in users and password == users[username]:
# 如果用户名和密码正确,将用户名保存在session中,并跳转到主页
session['username'] = username
return redirect(url_for('home'))
else:
# 如果用户名或密码错误,显示错误信息
error = 'Invalid username or password'
return render_template('login.html', error=error)
else:
# GET请求,显示登录页面
return render_template('login.html')
@app.route('/home')
def home():
if 'username' in session:
# 如果用户已登录,显示主页
return render_template('home.html', username=session['username'])
else:
# 如果用户未登录,跳转到登录页面
return redirect(url_for('login'))
@app.route('/logout')
def logout():
# 登出操作,将保存在session中的用户名删除
session.pop('username', None)
return redirect(url_for('login'))
if __name__ == '__main__':
app.run(debug=True)
```
以上代码中,我们通过Flask框架实现了一个用户登录系统,包括以下几个功能:
- 登录页面:用户需要输入用户名和密码才能登录。
- 主页:用户登录成功后,可以查看自己的用户名。
- 登出操作:用户可以随时登出,退出登录状态。
在实现过程中,我们使用了Flask的`session`功能来保存登录状态。具体来说,当用户登录成功后,我们将用户名保存在session中,当用户访问需要登录的页面时,我们检查session中是否存在用户名,如果存在,则表示用户已登录,否则跳转到登录页面。
需要注意的是,在实际开发中,用户的信息通常不会保存在一个字典中,而是保存在数据库中。此处只是为了演示示例代码而采用了一个简单的字典来保存用户信息。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)