Почему Flask перенаправляет на «GET /? HTTP / 1.1» - PullRequest
0 голосов
/ 27 декабря 2018

Я пишу простое приложение Flask, в котором я хочу отправить некоторые данные из внешнего интерфейса в приложение Flask, выполнить некоторые операции и вернуть новые данные во внешний интерфейс для отображения.Я уже делал подобные приложения раньше, и, возвращая объект ответа POST вместо render_template(), я могу просто возвращать данные и делать то, что я хочу с ними, во внешнем интерфейсе.Однако на этот раз у меня проблемы.

Я делаю POST-запрос от Jquery во внешнем интерфейсе.Кажется, все работает нормально, я вижу, что данные возвращаются в консоли браузера, за исключением перезагрузки страницы, прежде чем я могу отобразить новые данные.Он перезагружается до http://xxx.x.x.x:5000/?.

. Я вижу запрос на получение /? в консоли Flask.Я хотел бы знать, почему это происходит, и как я могу заставить его остановиться.

(Мне было трудно это исследовать, потому что большинство поисковых систем молча игнорируют любые вопросительные знаки в запросе.)

Приложение для колб:

import json
from flask import Flask, Response, render_template, request
from src.simple_lookup import analogy_lookup

app = Flask(__name__)
app.config['DEBUG'] = True

@app.route('/')
def hello_world():
    return render_template('index.html', results=['a', 'b'])

@app.route('/get_words_simple', methods=['POST'])
def get_words_simple():
    print('request.form:', request.form.keys)
    data = analogy_lookup(request.form['keyword'], request.form['base'], request.form['goal'])
    resp = Response(json.dumps(data), status=200, mimetype='application/json')
    print('data:', data)
    print('resp:', resp)
    return resp

if __name__ == "__main__":
    app.run()

Jquery:

  $.post('get_words_simple?', data, function(json, status) {
    console.log('response:', json);
    if (json.hasOwnProperty('error')) {
      $('.results').append('<p>' + json.error);
      return;
    }

    var words = json.words;
    $.each(words, function(i, text) {
      var p = $("<p>");
      p.append(text);
      $('.results').append(p);
    });
  });

Консоль для колб:

127.0.0.1 - - [27/Dec/2018 11:12:21] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [27/Dec/2018 11:12:21] "GET /static/js/main.js HTTP/1.1" 200 -
request.form: <bound method MultiDict.keys of ImmutableMultiDict([('keyword', ''), ('base', ''), ('goal', '')])>
127.0.0.1 - - [27/Dec/2018 11:12:23] "GET /? HTTP/1.1" 200 -
127.0.0.1 - - [27/Dec/2018 11:12:23] "GET /static/js/main.js HTTP/1.1" 200 -
data: ['obtuvo', 'takata', 'stadshypotek', 'kriwet', 'shafiee', 'martorell', 'collum', '29,400', 'muteesa', 'patzek']
resp: <Response 111 bytes [200 OK]>
127.0.0.1 - - [27/Dec/2018 11:12:23] "POST /get_words_simple? HTTP/1.1" 200 -

1 Ответ

0 голосов
/ 27 декабря 2018

Проблема заключалась в том, что Bootstrap переопределяет функциональность кнопки type="submit", если она находится в группе форм.Так что мой Jquery все делал правильно, но что-то в html кнопки все испортило и попыталось сделать запрос на публикацию другим способом

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