gpt4 book ai didi

python - Flask-Appbuilder 根据用户更改默认登陆页面

转载 作者:行者123 更新时间:2023-11-28 21:06:17 35 4
gpt4 key购买 nike

我正在使用 Flask App builder 制作一个基本网页。我想根据登录用户更改默认登录页面例如用户 1 应该被重定向到/home/user1 页面,用户 2 应该在登录后登录到/home/general 页面等。

下面是我的自定义索引 View

  class MyIndexView(IndexView):
index_template = 'index.html'

@expose('/')
def main(self):
return redirect(url_for('AuthDBView.login'))

@expose('/index')
def index(self):
return self.render_template('index.html', message="Welcome to my website")

并通过调用

启动应用程序
appbuilder = AppBuilder(app, db.session, indexview=MyIndexView)

我还没有看到有关如何实现此目的的任何示例或文档。非常感谢任何帮助

最佳答案

首先,Flask-AppBuilder 依赖于 Flask-login管理用户,因此您可能需要阅读其文档。

除此之外,Flask-AppBuilder 在每个请求之前将 current_user(已验证或匿名)注入(inject)到 Flask 的 g 变量中,因此您所要做的就是从g 变量并用它做你想做的事。

下面是一个将匿名用户(未登录)重定向到登录页面的 IndexView 示例。

如果用户不是匿名用户且其名称为 John,则它会被重定向到 HomeView.user 端点。

如果它的名字不是 John,它会被重定向到 HomeView.general 端点。

索引.py

from flask import g, url_for, redirect
from flask_appbuilder import IndexView, expose

class MyIndexView(IndexView):

@expose('/')
def index(self):
user = g.user

if user.is_anonymous:
return redirect(url_for('AuthDBView.login'))
else:
if user.first_name == 'John':
return redirect(url_for('HomeView.user'))
else:
return redirect(url_for('HomeView.general'))

内部 views.py

class HomeView(BaseView):
route_base = "/home"

@expose('/user/')
def user(self):
greeting = "Hello John"
return self.render_template('logged_user.html', greeting=greeting)


@ expose('/general/')
def general(self):
greeting = "Hello ordinary user"
return self.render_template('logged_user.html', greeting=greeting)

appbuilder.add_view_no_menu(HomeView())

关于python - Flask-Appbuilder 根据用户更改默认登陆页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43016435/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com