我創建了一個按鈕,單擊時會彈出一個破折號 boostrap 組件 dbc.Modal 和幾個輸入欄位。現在我想知道如何保存這些輸入資訊并寫入 MySQL 之類的資料庫。
我知道如何在 Dash 中的常規 html 按鈕的背景關系中讀取/寫入資料庫,并使用在單擊按鈕時觸發的回呼函式。但是迷失了如何使用模態和回呼。我在網上找不到任何示例,檔案也沒有顯示如何使用模式來保存輸入資料并與外部資料庫連接。請指教。下面是我的一段代碼:
編輯代碼:
dbc.Modal(
[
dbc.ModalHeader("Add Favorite Faculty"),
dbc.ModalBody(
dbc.Form(
[
dbc.Row(
[
dbc.Label("Enter Name:", id="fav-name"),
dbc.Input(type="text", placeholder="name")
]
),
html.Br(),
dbc.Row(
[
dbc.Label("Enter Email:", id="fav-email"),
dbc.Input(type="email", placeholder="email")
],
),
html.Br(),
dbc.Row(
[
dbc.Label("Enter Comment:", id="fav-comment"),
dbc.Input(type="text", placeholder="comment")
],
),
html.Br(),
dbc.Button("Submit", id='fav-submit', color="primary"),
],
)
),
dbc.ModalFooter(
dbc.Button("Close", color="secondary", id="close-add-faculty", className="ml-auto")
),
],
id="fav-modal",
is_open=False,
我的基本回呼函式只是打開和關閉模式。本質上,我想在單擊提交按鈕并寫入資料庫時??保存輸入欄位。
# prompt modal
@app.callback(
Output("fav-modal", "is_open"),
[
Input("add-faculty-button", "n_clicks"),
Input("close-add-faculty", "n_clicks")
],
[State("fav-modal", "is_open")]
)
def toggle_modal(n1, n2, is_open):
if n1 or n2:
return not is_open
return is_open
# write to DB
@app.callback(
Output("written", "children"),
[
State("fav-name", "value"),
State("fav-email", "value"),
State("fav-comment", "value")
],
[
Input("fav-submit", "n_clicks")
]
)
def write_to_db(n_clicks, name, email, comment):
if n_clicks is not None:
....
它的外觀影像:

uj5u.com熱心網友回復:
在這種情況下,這些輸入在模態中的事實并不重要。您仍然可以使用這些組件 ID 設定回呼來獲取每個輸入的值,然后使用它傳遞給您的資料庫。
您可能需要考慮添加一個“提交”按鈕或類似的東西,作為回呼的觸發器,并將這些輸入作為State. 否則,您的回呼將在每次輸入更新時觸發,并且您可能會向資料庫發送大量不需要的值。
編輯:
您需要為所有dbc.Input組件和提交按鈕添加 ID,以便將它們連接到回呼。這是一個例子。
# layout code
dbc.Input(type="text", placeholder="name", id='name-input')
# end of layout
@app.callback(
Output("some-notification-contaienr", "children"),
[
Input("submit-button", "n_clicks"),
],
[
State("name-input", "value"),
State("email-input", "value"),
State("comment-input", "value"),
]
)
def toggle_modal(submit_clicks, name, email, comment):
if not submit_clicks:
raise PreventUpdate
# some code here to send your stuff to the database
# ...
return 'Successfully submitted.'
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/469136.html
上一篇:在張量中找到使值總和最大化的樞軸
