将 ID 传递到 Bootstrap 删除模态

Pass ID into Bootstrap delete Modal

我正在按照在线教程尝试从 Bootstrap 创建删除模式,但它没有从我的用户 table 获取用户 ID。用户 table 存储在 sql 数据库中。

我不断收到错误消息:jinja2.exceptions.UndefinedError:'list object' 没有属性 'id'

我曾尝试在 Whosebug 网站上查看类似的问题,但我无法解决这个问题,因为我仍在学习代码并努力将答案与我的设置相关联。

提前感谢任何可以提供帮助的人。

所以下面是我的删除功能。

@app.route("/user/<int:user_id>/delete", methods=['POST'])
@login_required
def delete_user(user_id):
    user = User.query.get_or_404(user_id)
    db.session.delete(user)
    db.session.commit()
    flash('The account has been deleted', 'success')
    return redirect(url_for('view_user'))

那么这是我的 html 页面。

{% extends "layout.html" %}

{% block content %}
<div class="container">
    <div class="table-wrapper">
        {% with messages = get_flashed_messages(with_categories=true)%}
        {% if messages%}
        {% for category, message in messages %}
        <div class="alert alert-{{category}}">
            {{ message}}
        </div>
        {% endfor %}
        {% endif %}
        {% endwith %}
        <div class="table-title">
            <div class="row">
                <div class="col-sm-8">
                    <h2>User Account <b>Details</b></h2>
                </div>
                <div class="col-sm-4">
                    <div class="search-box">
                        <i class="fas fa-search"></i>
                        <input type="text" class="form-control" placeholder="Search&hellip;">
                    </div>
                </div>
            </div>
        </div>
        <table class="table table-striped table-hover table-bordered">
            <thead>
                <tr>
                    <th>#</th>
                    <th>Username<i class="fa fa-sort"></i></th>
                    <th>Email Address<i class="fa fa-sort"></i></th>
                    <th>Role<i class="fa fa-sort"></i></th>
                    <th>Actions</th>
                </tr>
            </thead>
            {% for user in user %}
            <tbody>
                <tr>
                    <td>{{user.id}}</td>
                    <td>{{user.username}}</td>
                    <td>{{user.email}}</td>
                    <td>{{user.role}}</td>
                    <td>
                        <a href="{{url_for('update_user', user_id=user.id)}}" class="edit" title="Edit"
                            data-toggle="tooltip"><i class="fas fa-edit"></i></a>
                        <button type="button" class="btn btn-danger btn-sm m-1" data-toggle="modal" data-target="#deleteModal">Delete</button>
                    </td>
                </tr>

            </tbody>


            {% endfor %}

        </table>


        <!-- Modal -->
  <div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModalLabel" aria-hidden="true">
    <div class="modal-dialog" role="document">
      <div class="modal-content">
        <div class="modal-header">
          <h5 class="modal-title" id="deleteModalLabel">Delete User?</h5>
          <button type="button" class="close" data-dismiss="modal" aria-label="Close">
            <span aria-hidden="true">&times;</span>
          </button>
        </div>
        <div class="modal-footer">
          <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
          <form action="{{ url_for('delete_user', user_id=user.id) }}" method="POST">
            <input class="btn btn-danger" type="submit" value="Delete">
          </form>
        </div>
      </div>
    </div>
  </div>

        <div class="clearfix">
            <div class="hint-text">Showing <b>5</b> out of <b>25</b> entries</div>
            <ul class="pagination">
                <li class="page-item disabled"><a href="#"><i class="fa fa-angle-double-left"></i></a></li>
                <li class="page-item"><a href="#" class="page-link">1</a></li>
                <li class="page-item"><a href="#" class="page-link">2</a></li>
                <li class="page-item active"><a href="#" class="page-link">3</a></li>
                <li class="page-item"><a href="#" class="page-link">4</a></li>
                <li class="page-item"><a href="#" class="page-link">5</a></li>
                <li class="page-item"><a href="#" class="page-link"><i class="fa fa-angle-double-right"></i></a></li>
            </ul>
        </div>
    </div>


    {% endblock content %}

以防万一,这是我的用户 table

class User(db.Model, UserMixin):

    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), nullable=False, unique=True)
    email = db.Column(db.String(80), nullable=False, unique=True)
    password = db.Column(db.String(120), nullable=False)
    role = db.Column(db.String(80))



     
<form action="{{ url_for('delete_user', user_id=user.id) }}" method="POST">
  <input class="btn btn-danger" type="submit" value="Delete">
</form>

user 是 python 列表所以你不能在这里使用这就是你得到这个错误的原因,所以为了删除你应该使用的特定用户一个用户的路由,那么你就可以处理那个用户。

<td>
  <a href="{{url_for('update_user', user_id=user.id)}}" class="edit" title="Edit" data-toggle="tooltip"><i class="fas fa-edit"></i></a>
   <button type="button" class="btn btn-danger btn-sm m-1" data-toggle="modal" data-target="#deleteModal">Delete</button>
</td> 

改为

<td class="btn btn-danger" onclick="return confirm('Are you to delete this user?')">Drop</td>

并删除整个模型。 这将帮助您使用 Bootstrap 模型

的默认模型

希望对你有所帮助