Как вызвать функцию Python для воздействия на конкретную строку в SQLite при нажатии кнопки в HTML - PullRequest
1 голос
/ 04 октября 2019

Я довольно новичок в мире программирования. Я пытаюсь создать базу данных активных студентов, которая была добавлена ​​с формой. Сейчас я пытаюсь добавить возможность архивировать ребенка, как только он перестанет быть активным. Я пробовал много разных методов, но я не знаю, как действовать.

Я добавил кнопку рядом с каждым дочерним элементом, и идея заключается в том, что если я нажму на кнопку, этот дочерний элемент затем будет удален изосновной список и добавляется в «архивированный» список, но вызывая запрос в Python для обновления активного поля с 1 (активное) до 0 (неактивное). Я попытался получить идентификатор строки конкретного ребенка с помощью jQuery, а затем сделал обновление. Одна идея, которую я прочитал, заключалась в том, чтобы поместить таблицу в другую форму и затем вызвать функцию через POST.

Я предполагаю, что единственный способ - это сделать это с уникальным идентификатором студента, но заставить этот идентификатор работать в функции сложно.

<h1>CHILD LIST</h1>
    <div class="row">
        <div class="col-lg-12">
            <section class="panel">

                <a href="/add_new_child"><button id="newChild" style="width:auto;" class="nav-item openbtn">Add a Child</button></a>
                <form action="/archive" method="post">
                    <table class="table" id="myTable2">
                        <colgroup>
                            <col style="width:50px">
                            <col style="width:150px">
                            <col style="width:150px">
                            <col style="width:150px">
                            <col style="width:150px">
                            <col style="width:150px">
                        </colgroup>
                        <tbody>
                            <tr>
                                <th onclick="sortTable(0)" scope="col"><i class="fas fa-snowman"></i> ID <i class="fas fa-sort"></th>
                                <th onclick="sortTable(1)" scope="col"><i class="fas fa-snowman"></i> NAME <i class="fas fa-sort tooFar"></i></th>
                                <th onclick="sortTable(2)" scope="col"><i class="fas fa-snowman"></i> SURNAME <i class="fas fa-sort tooFar"></th>
                                <th onclick="sortTable(3)" scope="col"><i class="fas fa-snowman"></i> PARENT <i class="fas fa-sort tooFar"></th>
                                <th onclick="sortTable(4)" scope="col"><i class="fas fa-snowman"></i> SCHOOL <i class="fas fa-sort tooFar"></th>
                                <th scope="col"><i class="icon_pin_alt"></i><i class="fas fa-snowman"></i> ACTION</th>

                            </tr>

                            {% for row in childData %}
                            <tr>
                                <td>{{ row.id }}</td>
                                <td class="pdata">{{ row.childName }}</td>
                                <td class="pdata">{{ row.childSurname }}</td>
                                <td class="pdata">{{ row.parentName }}</td>
                                <td class="pdata">{{ row.schoolName }}</td>
                                <td>
                                    <div class="btn-group">
                                        <a class="btn btn-danger" name="inactive" href="#" ng-click="archiveChild({{ row.id }})" disabled><i class="fas fa-times-circle"></i></a>
                                    </div>
                                </td>
                            </tr>
                            {% endfor %}

                        </tbody>
                    </table>
                </form>
            </section>
        </div>
    </div>
    <script>
    $('tr').click(function(){
        $(this).siblings().removeClass('selected');
        $(this).addClass('selected');
        $('.btn-danger').removeAttr('disabled');
    });

    function archiveChild(child)
    {
        alert(child);
        $('.btn-danger').click(function(){

        // python function call
        $.post("/child/10")
            .done(function (reply)
            {
                $('tr.selected').remove();
                $('.btn-danger').attr('disabled','disabled');
            })
            .fail(function() {
                alert( "error" );
             });
        });
    }

</script>
@app.route("/" , methods=["GET", "POST"])
@login_required
def index():
    """Show Child data"""
    if request.method == "POST":
        db.execute("UPDATE childData SET active = 0 WHERE childData.id=:rowid",
                   rowid=request.form['rowid'])

    # Select the necessary data to view from Child Data, Parent data and school data
    childData = db.execute("SELECT DISTINCT childData.id, childData.childName, childData.childSurname, childData.fees, parentData.parentName, schoolData.schoolName, schoolData.contactName FROM childData, parentData, schoolData WHERE childData.parentID = parentData.parentID AND childData.schoolID = schoolData.schoolID AND childData.userID=:userID AND parentData.userID=:userID AND schoolData.userID=:userID AND childData.active = 1",
                          userID=session["user_id"])

    return render_template("index.html", childData=childData)
@app.route("/child/<id>" , methods=["POST"])
@login_required
def archive_child(id):
    """archive Child data"""

    db.execute("UPDATE childData SET active = 0 WHERE childData.id = :childId",
          childId=id)

    return '1'

Все учащиеся с активным 1 находятся в одном списке, а 0 - в другом. Затем кнопка должна изменить активное значение любого ученика, которого я выберу, с 0 на 1 или с 1 на 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...