Страница не отображается в Flask, несмотря на то, что функция вызывается правильно - PullRequest
0 голосов
/ 22 марта 2020

Я работаю с шаблоном Flask для создания таблицы, в которой строки заполняются базой данных. Я пытаюсь отредактировать одну из этих строк, когда нажата соответствующая кнопка редактирования. В настоящее время код просматривает результаты базы данных и заполняет таблицу, прикрепляя кнопку к каждой строке. При нажатии кнопки вызывается скрипт, который использует ajax для вызова моей python функции, которая должна обрабатывать ввод и перенаправлять страницу для редактирования. html. Все вызывается правильно, но страница просто обновляется и остается на таблицах. html и никогда не уходит. Ниже приведен код

@app.route('/tables.html', methods=['GET','POST'])
def questions():
   table = list(getAllQuestions())
   if(request.method == 'GET'):
       return render_template('layouts/default.html',
                              content=render_template( 'pages/tables.html', value=table,), value=table)

def getAllQuestions():
   conn = mysql.connect()
   cursor = conn.cursor()
   cursor.execute("SELECT * FROM tbl_questions")
   data = cursor.fetchall()
   data = data[:10]
   return data
@app.route("/edit.html", methods=['GET', 'POST'])
def edit():
   print("in edit")
   form = RegisterForm(request.form)
   return render_template('pages/edit.html', form=form)
@app.route('/background_process_test', methods=["GET", "POST"])
def background_process_test():
   return redirect(url_for('edit'))

html и js

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script type=text/javascript>
function clickfunction(value) {
console.log(value)
var resp = {
    'value': value
    }
console.log(resp)

$.ajax({
url: "/background_process_test",
type: 'POST',
contentType: 'application/json; charset=utf-8',
data: JSON.stringify(value),
dataType: 'json',
success: function(response) { alert(response); }
})
}
</script>

      <div class="panel-header panel-header-sm">
      </div>
      <div class="content">
        <div class="row">
          <div class="col-md-12">
            <div class="card">
              <div class="card-header">
                <h4 class="card-title"> Questions </h4>
              </div>
              <div class="card-body">
                <div class="table-responsive">
                  <table class="table">
                    <thead class=" text-primary">
                      <th>
                       Question
                      </th>
                      <th>
                       Round
                      </th>
                    </thead>
                    <tbody>
                      {% for row in value %}
                         <tr id="table">
                           <td>{{row[0]}}</td>
                            <td>{{row[1]}}</td>
                            <td>{{row[2]}}</td>
                             <td><form><a><button class='editButtons' value={{row[0]}} onclick="clickfunction({{ row[0] }})">Edit</button></a></form> </td>
                         </tr>

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

Соответствующий вывод

in edit
127.0.0.1 - - [22/Mar/2020 12:58:03] "GET /edit.html HTTP/1.1" 200 -
127.0.0.1 - - [22/Mar/2020 12:58:04] "GET /tables.html HTTP/1.1" 200 -

Когда все это будет запущено, «in edit» действительно регистрируется в консоли, но страница никогда не отображается. Вместо этого страница таблиц просто обновляется, и кажется, что ничего не происходит, как вы можете определить по запросу GET после того, как он был отредактирован. Я уверен, что совершаю какую-то глупую ошибку, но это мой первый проект flask (и, честно говоря, первый веб-проект, никогда не использовавший js). Если что-то необходимо выяснить или требуется больше кода для понимания обстоятельств, связанных с проблемой, дайте мне знать, и я уточню

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