dash_bootstrap_components 'form'

问题描述

我正在尝试使用 dashdash-bootstrap-components 构建一个小表单,但我不知道如何使用该表单的 'action' attribute

或者,更确切地说,我试图将用户输入到表单中的数据保存到 Postgres DB,而 action 属性似乎是这样做的方法,但我无法找到有关如何使用它的任何示例。

有人有使用 DBC 构建表单的经验吗?

编辑我当前的解决方案是(以简化形式):

def handle_submit(n_submit,e,pass): 
    username = e.split('@') 
    pg = pd.DataFrame(e,username,pass) 
    if n_submit:
       pg.to_sql("table",con=db.engine,if_exists="append",index=False)
       return 'success'

但这似乎不起作用。

解决方法

默认情况下不使用 action 端点

prevent_default_on_submit (boolean; default True):表单在提交事件上调用 preventDefault 。如果您希望将表单数据发布到提交事件上的操作指定的端点,请将 prevent_default_on_submit 设置为 False。默认为 True。

根据您的问题,您似乎只想在提交时执行某些操作,不需要 from dash import Dash import dash_html_components as html import dash_bootstrap_components as dbc from dash.dependencies import Output,Input,State app = Dash(__name__,external_stylesheets=[dbc.themes.BOOTSTRAP]) form = dbc.Form( id="form",children=[ dbc.FormGroup( [ dbc.Label("Email",className="mr-2"),dbc.Input(id="email",type="email",placeholder="Enter email"),],className="mr-3",),dbc.FormGroup( [ dbc.Label("Password",dbc.Input(id="password",type="password",placeholder="Enter password"),dbc.Button("Submit",color="primary"),inline=True,) app.layout = html.Div([form,html.Div(id="output")]) @app.callback( Output("output","children"),Input("form","n_submit"),State("email","value"),State("password",prevent_initial_call=True ) def handle_submit(n_submit,email,password): # Do stuff... return n_submit if __name__ == "__main__": app.run_server() 。在这种情况下,您可以执行以下操作:

n_submit

@app.callback( Output("output",prevent_initial_call=True,) def handle_submit(n_submit,password): username = email.split("@") pg = pd.DataFrame( {"email": [email],"username": [username],"password": [password]} ) if n_submit: pg.to_sql("table",con=db.engine,if_exists="append",index=False) return "success" return "" 在上面的回调中返回,以表明提交操作有效,但您可能希望根据需要将其更改为其他内容。

更新

根据您的编辑,您可以将回调更改为如下所示:

pass

我改变了 DataFrame 的构造方式和变量名称。 prevent_initial_call 是保留关键字,因此我不会将其用作参数名称。我还添加了一个默认的 return 语句。由于 True 被设置为 n_submit,因此此处并不是必需的,但它显示了您如何解释 False 评估为 def request_login(self): self.username = input("Enter your user name") 的情况。

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...