Flask如何设置主页面为登录页面且必须登录才能跳转
时间: 2023-05-12 22:07:36 浏览: 57
您可以使用 Flask 中的装饰器来实现这个功能。首先,您需要创建一个装饰器函数,用于检查用户是否已登录。如果用户已登录,则允许访问请求的页面,否则重定向到登录页面。以下是一个示例代码:
```python
from flask import Flask, redirect, url_for, render_template, request
app = Flask(__name__)
# 定义装饰器函数,用于检查用户是否已登录
def login_required(func):
def wrapper(*args, **kwargs):
if 'username' in session:
return func(*args, **kwargs)
else:
return redirect(url_for('login'))
return wrapper
# 定义登录页面路由
@app.route('/login', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
session['username'] = request.form['username']
return redirect(url_for('index'))
return render_template('login.html')
# 定义主页面路由,使用装饰器函数进行登录检查
@app.route('/')
@login_required
def index():
return render_template('index.html')
if __name__ == '__main__':
app.run()
```
在上面的代码中,我们定义了一个装饰器函数 `login_required`,它接受一个函数作为参数,并返回一个新的函数 `wrapper`。`wrapper` 函数首先检查用户是否已登录,如果已登录,则调用原始函数,否则重定向到登录页面。
我们还定义了两个路由函数,`login` 和 `index`。`login` 函数用于显示登录页面和处理登录请求,`index` 函数用于显示主页面。在 `index` 函数上使用了 `@login_required` 装饰器,表示该函数需要登录才能访问。
最后,我们在 `if __name__ == '__main__':` 语句中启动了 Flask 应用程序。