gpt4 book ai didi

javascript - 如何使用 Flask 动态显示模态窗口并发送数据

转载 作者:行者123 更新时间:2023-12-03 00:29:30 26 4
gpt4 key购买 nike

我试图在用户单击哪个项目时动态插入模式窗口 html 代码,否则我会在 html 中加载所有项目的模式窗口代码。我还在从 Flask/Sql 加载的模态窗口中有一些输入,我想让用户更新其中的任何一个,所以我需要在单击提交按钮时将数据发送回 python。但现在因为我有太多的模态窗口(即使它们有单独的 ID),我找不到实现此目的的方法

这是我的代码:

routes.py

@app.route('/viewApart', methods=['GET', 'POST'])
def viewApart():
apts = []
getApts = db.engine.execute("SELECT * FROM apartments")
for a in getApts:
apts.append((a))
rooms = []
getRooms = db.engine.execute("SELECT * FROM rooms")
for r in getRooms:
rooms.append((r))
return render_template('apartments.html', title=_('Apartments'), apts=apts, rooms=rooms)

公寓.html

....
<section class="container">
<div class="row">
.. below some gallery code to show individual items from apts ..

{% for apt in apts %}
<div class="col-md-3">
<a href="javascript:void(0);" class="widget__v2 apt-widget rounded-corners box-shadow__v1 white" data-anchor="modalwindow" data-target="edit-apartment{{ apt[0] }}" id="apt{{ apt[0] }}">
<div class="widget-header">
<figure class="image h-180">
<img src="{{url_for('static', filename='_assets/img/apt/{{ apt[0] }}.jpg')}}" alt="" class="image__scaledown">
</figure>

.. below model window ..

<div id="edit-apartment{{ apt[0] }}" class="modal large">
<div class="modal-wrapper">
<div class="modal-inner">
<div class="modal-header">
<h3 class="title">{{ _('Edit Apartment') }}</h3>
<a href="javascript:void(0);" data-anchor="close-modal" class="modal-close-btn"></a>
</div>
<div class="modal-content">
<div class="row medium-gutter">
<div class="col-md-6">
<div class="row medium-gutter">
<div class="col-md-8">
<div class="form-group">
<div class="form-group-title clearfix">
<label for="apt_display_name">{{ _('Display Name') }}</label>
<div class="lh-24 text__default-grey pull-right" data-tooltip="true" data-tooltip-direction="up" data-multiline="true"
data-content="..">
<i class="icofont-question-circle"></i>
</div>
</div>
<input id="apt_display_name" type="text" class="form-control" value="{{ apt[1] }}">
</div>
</div>
<div class="col-md-4">
<div class="form-group">
<label for="apt_number">{{ _('Apt. Number') }}</label>
<input id="apt_number" type="text" class="form-control" value="{{ apt[2] }}">
</div>
</div>
</div>
.. and so on...

.. and submit button ..
<a href="javascript:void(0);"id="btnSubmit">{{ _('Save Changes') }}</a>
</div>
</section>

现在,即使有多个模型窗口,我也可以在模态窗口中显示当前数据,所以我想在单击 btnSubmit 按钮时实现此目的,我需要将所有输入值发送回 python,以便我可以更新我的 sql 或插入新的。如果需要更多代码,请告诉我..

谢谢

最佳答案

如果我正确理解你的问题 - 你的页面的骨架版本将是这样的

<!DOCTYPE html>
<html>
<body>
<p>INTRODUCING MY AWESOME SITE AND 2 DIVS YOU CAN CLICK</p>

<div id="apt_1_modal">
<input id="apt_1_text"></input>
<a onclick="myFunction(event)">Submit</a>
</div>

<div id="apt_2_modal">
<input id="apt_2_text"></input>
<a onclick="myFunction(event)">Submit</a>
</div>

</body>
</html>

您将需要 JavaScript 来处理用户交互 - 脚本看起来像这样。您可以将此脚本直接附加到 render_template 输出中,也可以将其作为文件附加。

该脚本将执行两件事 - 首先捕获用户输入的内容,然后将该数据发送到 flask

<script>
function myFunction(e) {
//FIRST WE CAPTURE THE VALUE THAT THE USER INPUTS
let userInput = {toSend: e.currentTarget.previousElementSibling.value}

//THEN WE SEND IT TO THE FLASK BACKEND USING AJAX (Fetch API)
fetch("/api/path/to/flask/route", {
method: 'POST',
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify(userInput)
}
</script>

现在您需要一个可以处理userInput数据的函数

后端

from flask import Flask, request #import main Flask class and request object
@app.route('/api/path/to/flask/route', methods=['POST'])
def capture_userinput():
req_data = request.get_json()
recd_data = req_data['toSend']
your_code_to_push_data_to_db(recd_data) #Depends on your ORM/DB

我希望我已经让您了解了如何操作 - 您肯定必须更改捕获 userInput 的方式,调整 fetch 调用并发送/捕获 flask api 中的其他数据。

关于javascript - 如何使用 Flask 动态显示模态窗口并发送数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53933717/

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