Оставаться на той же странице после обновления поисковых данных в flask - PullRequest
0 голосов
/ 16 марта 2020

Мне нужно остаться в результатах поиска после обновления строки. В настоящее время я использую update.html для публикации данных на @update после этого рендеринга update.html и вызываю update модальное значение bootstrap для получения данных из определенной строки. После этого вызовите update_two, чтобы обновить строку в mysql, используя SqlAlchemy. Затем пытаюсь остаться в результате поиска.

app.py

@app.route('/update', methods=['GET', 'POST'])
def update():
    # all_data = BankData.query.all()
    if request.method == 'POST':
        start_date = request.form.get('start_date')
        end_date = request.form.get('end_date')

        searched_data = db.session.query(BankData).filter(
            BankData.process_date.between(start_date, end_date))

    # db.session.add(searched_data)
    # db.session.commit()

    return render_template('update.html', start_date=start_date, end_date=end_date, searched_data=searched_data)


@app.route('/update_two', methods=['GET', 'POST'])
def update_two():

    # searched_data = session.get('searched_data')

    if request.method == 'POST':
        new_data = BankData.query.get(request.form.get('true_id'))

        new_data.process_date = request.form['date']
        new_data.description = request.form['description']
        new_data.debit = request.form['debit']
        new_data.category = request.form['category']
        db.session.commit()

    return redirect(request.url)

update. html

{% extends 'base.html' %}
{% include 'header.html' %}
{%block title%} Home {%endblock%}

{%block body%}
<div class="container">
    <div class="row">
        <div class="col md-12">
            <div class="jumbotron p-3">
                <h2>Bank Transaction date from <b
                        style="margin: 15px; background-color: dimgrey;">{{start_date}}</b>-To-<b
                        style="margin: 15px; background-color: dimgrey;">{{end_date}}</b></h2>
            </div>
            <table class="table table-hover table-dark">
                <tr>
                    <th>Date</th>
                    <th>Description</th>
                    <th>Debit</th>
                    <th>Category</th>
                    <!-- <th>Category</th> -->
                </tr>

                {% for data in searched_data %}
                <tr>
                    <!-- <td>{{data.id}}</td> -->
                    <td>{{data.process_date}}</td>
                    <td>{{data.description}}</td>
                    <td>{{data.debit}}</td>
                    <td>{{data.category}}</td>

                    <td>
                        <a href="/update/{{data.id}}" class="btn btn-warning btn-xs" data-toggle="modal"
                            data-target="#modaledit{{data.id}}">Edit</a>
                        <!-- <a href="/delete/{{data.id}}" class="btn btn-danger btn-xs"
                            onclick="return confirm('Are You Sure To Delete ?')">Delete</a> -->
                    </td>

                </tr>
                <!-- Modal Edit Employee-->
                <div id="modaledit{{data.id}}" class="modal fade" role="dialog">
                    <div class="modal-dialog">
                        <div class="modal-content">
                            <div class="modal-header">
                                <h4 class="modal-title">Update Information</h4>
                            </div>
                            <div class="modal-body">
                                <form action="{{url_for('update_two')}}" method="POST">
                                    <div class="form-group">
                                        <label>Date</label>
                                        <input type="hidden" name="true_id" value="{{data.id}}">

                                        <input type="text" class="form-control" name="date"
                                            value="{{data.process_date}}">
                                    </div>
                                    <div class="form-group">
                                        <label>Description</label>

                                        <input type="text" class="form-control" name="description"
                                            value="{{data.description}}">
                                    </div>
                                    <div class="form-group">
                                        <label>Debit:</label>
                                        <input type="text" class="form-control" name="debit" value="{{data.debit}}">

                                    </div>
                                    <div class="form-group">
                                        <label>Category:</label>

                                        <select id="category" name="category">
                                            <option selected value="None">{{data.category}}</option>
                                            <option value="BankFees">Bank Fees</option>
                                            <option value="StaffExpences">Staff Expence</option>
                                            <option value="Refund">Refund</option>
                                            <option value="Telephone">Telephone</option>
                                        </select>
                                    </div>
                                    <div class="form-group">
                                        <button class="btn btn-primary" type="submit">Update</button>
                                    </div>
                                </form>
                            </div>
                            <div class="modal-footer">
                                <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
                            </div>
                        </div>
                    </div>
                </div>

                {% endfor %}
            </table>
        </div>
    </div>
</div>
</div>

{%endblock%}

1 Ответ

0 голосов
/ 16 марта 2020

Если я прав:

С конечной точкой /update вы выводите результаты поиска из базы данных, а затем с конечной точкой /update_two вы обновляете базу данных новыми данными или около того ...

И затем вам бы хотелось, чтобы после того, как /update_two завершил свою работу, он увидел предыдущие или новые результаты поиска (это было сделано с помощью конечной точки /update), чтобы вы могли изменить то, что вы возвращаете в /update_two, чтобы перенаправить на 1-ую конечную точку /update следующим образом:

from flask import url_for


@app.route('/update_two', methods=['GET', 'POST'])
def update_two():
    # searched_data = session.get('searched_data')

    if request.method == 'POST':
        new_data = BankData.query.get(request.form.get('true_id'))

        new_data.process_date = request.form['date']
        new_data.description = request.form['description']
        new_data.debit = request.form['debit']        
        new_data.category = request.form['category']
        db.session.commit()

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