flask实现带有注册登录功能的管理系统
时间: 2024-04-23 15:03:22 浏览: 13
要实现一个带有注册登录功能的管理系统,可以使用 Flask 框架和 SQLAlchemy 库来实现。以下是一个简单的示例:
1. 安装 Flask 和 SQLAlchemy
```python
pip install Flask SQLAlchemy
```
2. 创建 Flask 应用
```python
from flask import Flask
app = Flask(__name__)
```
3. 配置数据库
```python
from flask_sqlalchemy import SQLAlchemy
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@localhost/db_name'
app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False
db = SQLAlchemy(app)
```
4. 定义用户模型
```python
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(50), unique=True, nullable=False)
password = db.Column(db.String(100), nullable=False)
def __repr__(self):
return f'<User {self.username}>'
```
5. 创建数据库表
```python
db.create_all()
```
6. 创建注册和登录路由
```python
from flask import render_template, request, redirect, url_for, flash
from werkzeug.security import generate_password_hash, check_password_hash
@app.route('/register', methods=['GET', 'POST'])
def register():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
user = User.query.filter_by(username=username).first()
if user:
flash('Username already exists.')
return redirect(url_for('register'))
new_user = User(username=username, password=generate_password_hash(password, method='sha256'))
db.session.add(new_user)
db.session.commit()
flash('Account created.')
return redirect(url_for('login'))
return render_template('register.html')
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
username = request.form['username']
password = request.form['password']
remember = True if request.form.get('remember') else False
user = User.query.filter_by(username=username).first()
if not user or not check_password_hash(user.password, password):
flash('Incorrect username or password.')
return redirect(url_for('login'))
session['user_id'] = user.id
session['username'] = user.username
flash('Logged in successfully.')
return redirect(url_for('home'))
return render_template('login.html')
```
7. 创建需要登录才能访问的路由
```python
from flask_login import login_required
@app.route('/home')
@login_required
def home():
return render_template('home.html')
```
8. 创建注销路由
```python
from flask_login import logout_user
@app.route('/logout')
@login_required
def logout():
logout_user()
flash('Logged out successfully.')
return redirect(url_for('login'))
```
9. 运行应用程序
```python
if __name__ == '__main__':
app.run(debug=True)
```
以上是一个简单的示例,可以根据需要进行修改和扩展。同时,为了实现注册登录功能,我们还需要使用 Flask-Login 扩展来管理用户会话。