【问题标题】:How to pass data from table of record to Modal如何将数据从记录表传递到模态
【发布时间】:2020-10-23 21:38:10
【问题描述】:

我知道这个问题被问了很多,但所有解决方案都不适合我。我本质上在一个视图中有一个表格,它使用 HTML 和 sqlalchemy 中的 foreach 循环显示,这会一一吐出记录并在最后一列添加一些“操作”按钮(删除和编辑),我只需从 foreach 循环中的每条记录中传递 ID,然后就完成了。

我的模式有很多问题,当我在每个输入的“值”字段中回显数据时,它只会显示第一条记录中的数据,我真的很难过如何制作这个功能有效(javascript不是我最强的语言),不使用Ajax和php也可以工作吗? 我正在使用烧瓶、python 和 sqlalchemy。

我认为问题在于模态仅在 foreach 循环开始运行时创建一次,因此为什么它只有模态内的第一条记录数据,任何帮助解决这个问题,这样我就可以编辑里面的每个单独的记录桌子会很棒!感谢您的帮助。

我的html代码

{% extends "layout.html" %}
        {% block title %}
            Admin
        {% endblock %}
        {% block body %}
          <h1> Admin</h1>
          <div class="form-group">
        <table border=1>
          <tr>
            <th>usa_order_id</th>
            <th>user_id</th>
            <th>cpu</th>

          </tr>
          {% for usa_order in usa_orders %}
          <tr>
            <th><input class="form-control" name ="usa_order_id" value={{usa_order.usa_order_id}}></th>
            <th><input class="form-control" name ="user_id" value={{usa_order.user_id}}></th>
            <th><input class="form-control" name ="cpu" value={{usa_order.cpu}}></th>

            <th>
              <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal">
                Open modal
              </button>
              <!-- The Modal -->
              <div class="modal" id="myModal">
                <div class="modal-dialog">
                  <div class="modal-content">

                    <!-- Modal Header -->
                    <div class="modal-header">

                      <button type="button" class="close" data-dismiss="modal" >&times;</button>
                    </div>

                    <!-- Modal body -->
                    <div class="modal-body">
                      <div class="form-group">
                          <input class="form-control" name ="usa_order_id" value=usa_order_id>
                          <input class="form-control" name ="user_id" value=user_id>
                          <input class="form-control" name ="cpu" value=cpu>
                      </div>
                    </div>
                    <!-- Modal footer -->
                    <div class="modal-footer">
                      <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
                    </div>

                  </div>
                </div>
              </div>
            </th>
          </tr>
        {% endfor %}
        </table>
          </div>
            {% endblock %}

我的烧瓶 python 代码

from flask import Flask, render_template, request
from flask_sqlalchemy import SQLAlchemy

from  model import *
app = Flask(__name__)

app.config['SQLALCHEMY_DATABASE_URI']='mysql://root:xxx@localhost:3306/xxx'
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN']=True
db = SQLAlchemy(app)


@app.route("/admin")
def index():
    usa_order = usa_order.query.all()
    return render_template("admin.html",usa_order = usa_order)

if __name__ == '__main__':
    app.run(debug=True,host="0.0.0.0")

我的模型.py

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()
class usa_order(db.Model):

    __tablename__ = "usa_order"
    usa_order_id = db.Column(db.Integer,primary_key = True)
    cpu = db.Column(db.String, nullable=False)
    user_id = db.Column(db.Integer, db.ForeignKey("user.user_id"), nullable=False)

【问题讨论】:

    标签: python html ajax flask flask-sqlalchemy


    【解决方案1】:

    我认为您需要为每个 Modal 分配一个唯一 ID,这样它就不会总是被首先生成的 Modal 所取代。请尝试以下HTML

    {% extends "layout.html" %}
            {% block title %}
                Admin
            {% endblock %}
            {% block body %}
              <h1> Admin</h1>
              <div class="form-group">
            <table border=1>
              <tr>
                <th>usa_order_id</th>
                <th>user_id</th>
                <th>cpu</th>
    
              </tr>
              {% for usa_order in usa_orders %}
              <tr>
                <th><input class="form-control" name ="usa_order_id" value={{usa_order.usa_order_id}}></th>
                <th><input class="form-control" name ="user_id" value={{usa_order.user_id}}></th>
                <th><input class="form-control" name ="cpu" value={{usa_order.cpu}}></th>
    
                <th>
                  <button type="button" class="btn btn-primary" data-toggle="modal" data-target="#myModal{{usa_order.id}}">
                    Open modal
                  </button>
                  <!-- The Modal -->
                  <div class="modal" id="myModal{{usa_order.id}}">
                    <div class="modal-dialog">
                      <div class="modal-content">
    
                        <!-- Modal Header -->
                        <div class="modal-header">
    
                          <button type="button" class="close" data-dismiss="modal" >&times;</button>
                        </div>
    
                        <!-- Modal body -->
                        <div class="modal-body">
                          <div class="form-group">
                              <input class="form-control" name ="usa_order_id" value=usa_order_id>
                              <input class="form-control" name ="user_id" value=user_id>
                              <input class="form-control" name ="cpu" value=cpu>
                          </div>
                        </div>
                        <!-- Modal footer -->
                        <div class="modal-footer">
                          <button type="button" class="btn btn-danger" data-dismiss="modal">Close</button>
                        </div>
    
                      </div>
                    </div>
                  </div>
                </th>
              </tr>
            {% endfor %}
            </table>
              </div>
                {% endblock %}
    

    注意:我所做的只是将记录 ID 添加到 Modal ID。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-11-14
      • 2021-11-11
      • 2019-11-18
      • 2023-03-14
      相关资源
      最近更新 更多