flask的登录注册网页
时间: 2023-09-05 12:11:14 浏览: 31
当使用 Flask 开发登录注册网页时,你可以按照以下步骤进行:
1. 导入 Flask 模块和相关扩展:
```python
from flask import Flask, render_template, request, redirect, url_for, session
from flask_sqlalchemy import SQLAlchemy
```
2. 创建 Flask 应用和配置数据库:
```python
app = Flask(__name__)
app.config['SECRET_KEY'] = 'your_secret_key' # 设置一个密钥用于 Session
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///users.db' # 设置数据库连接地址
db = SQLAlchemy(app)
```
3. 创建用户模型:
```python
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
username = db.Column(db.String(20), unique=True, nullable=False)
password = db.Column(db.String(100), nullable=False)
```
4. 创建登录和注册的路由和视图函数:
```python
@app.route('/')
def index():
return render_template('index.html')
@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.password == password:
session['username'] = username
return redirect(url_for('dashboard'))
else:
return render_template('login.html', error='Invalid username or password')
return render_template('login.html')
@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:
return render_template('register.html', error='Username already exists')
else:
new_user = User(username=username, password=password)
db.session.add(new_user)
db.session.commit()
session['username'] = username
return redirect(url_for('dashboard'))
return render_template('register.html')
```
5. 创建登录后的仪表盘页面路由和视图函数:
```python
@app.route('/dashboard')
def dashboard():
if 'username' in session:
return render_template('dashboard.html', username=session['username'])
else:
return redirect(url_for('login'))
```
6. 创建模板文件(HTML文件):
index.html:
```html
<!DOCTYPE html>
<html>
<head>
<title>Flask Login/Register</title>
</head>
<body>
<h1>Welcome to Flask Login/Register</h1>
<p><a href="{{ url_for('login') }}">Login</a> | <a href="{{ url_for('register') }}">Register</a></p>
</body>
</html>
```
login.html:
```html
<!DOCTYPE html>
<html>
<head>
<title>Login</title>
</head>
<body>
<h1>Login</h1>
{% if error %}
<p>{{ error }}</p>
{% endif %}
<form method="POST" action="{{ url_for('login') }}">
<label>Username:</label>
<input type="text" name="username" required><br>
<label>Password:</label>
<input type="password" name="password" required><br>
<input type="submit" value="Login">
</form>
</body>
</html>
```
register.html:
```html
<!DOCTYPE html>
<html>
<head>
<title>Register</title>
</head>
<body>
<h1>Register</h1>
{% if error %}
<p>{{ error }}</p>
{% endif %}
<form method="POST" action="{{ url_for('register') }}">
<label>Username:</label>
<input type="text" name="username" required><br>
<label>Password:</label>
<input type="password" name="password" required><br>
<input type="submit" value="Register">
</form>
</body>
</html>
```
dashboard.html:
```html
<!DOCTYPE html>
<html>
<head>
<title>Dashboard</title>
</head>
<body>
<h1>Welcome, {{ username }}</h1>
<p>This is your dashboard.</p>
<p><a href="{{ url_for('logout') }}">Logout</a></p>
</body>
</html>
```
7. 启动应用:
```python
if __name__ == '__main__':
db.create_all() # 创建数据库表
app.run(debug=True)
```
这是一个简单的 Flask 登录注册网页的示例,你可以根据自己的需求进行扩展和优化。记得在开发过程中安装所需的 Flask 和 SQLAlchemy 扩展。