gpt4 book ai didi

python-3.x - 在 flask 应用程序中设置 python dash 仪表板

转载 作者:行者123 更新时间:2023-12-05 08:11:46 24 4
gpt4 key购买 nike

我正在尝试构建一个网站,让人们可以在 dash 应用程序中访问不同类型的图表。我希望用户在访问仪表板之前使用用户名和密码登录。这是我目前所拥有的

from flask import Flask, flash, render_template, request, session
import os, dash
import dash_html_components as html
import dash_core_components as dcc
import flask

app = Flask(__name__)
dash_app = dash.Dash(__name__, server=app, url_base_pathname='/dash_app')
dash_app.config['suppress_callback_exceptions']=True

def index_page():
index = html.Div([
dcc.Link('Page 1', href='/page1'),
html.Br(),
dcc.Link('Page 2', href='/page2'),
html.Br(),
dcc.Link('Page 3', href='/page3'),
html.Br()
])
return index

dash_app.layout = html.Div(children=[
dcc.Location(id='url', refresh=False),
html.Div(id = 'page-content')
])

page_1 = html.Div([
html.H1('Welcome to page 1'),
index_page()
])

page_2 = html.Div([
html.H1('Welcome to page 2'),
index_page()
])

page_3 = html.Div([
html.H1('Welcome to page 3'),
index_page()
])

@dash_app.callback(
dash.dependencies.Output('page-content','children'),
[dash.dependencies.Input('url','pathname')]
)
def display_page(pathname):
if pathname == '/page1':
return page_1
if pathname == '/page2':
return page_2
if pathname == '/page3':
return page_3
else:
return index_page()

@app.route('/')
def home():
if not session.get('logged_in'):
return render_template('login.html')
else:
return flask.redirect('/dash_app')


@app.route('/login', methods=['POST'])
def do_admin_login():
if request.form['password'] == 'password' and request.form['username'] == 'admin':
session['logged_in'] = True
else:
flash('wrong password!')
return home()

if __name__ == "__main__":
app.secret_key = os.urandom(12)
app.run(debug=True, port=5000)

我想解决两个问题:

  • 使用此设置,您无需登录即可访问仪表板。如果您不输入用户名和密码,而是直接转到 http://localhost:5000/dash_app,您会立即看到仪表板。我只想向已登录的人授予访问权限。

  • 如果我刷新浏览器页面,在单击三个页面链接之一后,我收到一条消息“未找到”:enter image description here 我不明白为什么会这样,我感觉是这样的与应用程序的结构有关。

问题:我该如何解决这两个问题?而且,更一般地说;这种结构是否符合我要实现的目标?这是在 flask 应用程序中设置仪表板的正确方法吗? (我知道这个登录设置不安全)

编辑: 关于刷新问题,我确信它与在 flask 应用程序中运行的 dash 应用程序有关,因为当我单独运行 dash 应用程序时,我可以刷新 http://localhost:5000/page1并且渲染成功。

最佳答案

你应该使用 flask-security它不是构建您自己的登录机制,而是解决许多问题,例如注册、登录、注销、忘记密码等。

关于python-3.x - 在 flask 应用程序中设置 python dash 仪表板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51946300/

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