Перенаправление колбы на нажатие кнопки не происходит - PullRequest
0 голосов
/ 04 июля 2019

Я все еще пытаюсь изучить флешку / перенаправления / и т.д. в целом.Я попытался создать простую страницу с кнопкой отправки, и когда я отправляю, перенаправляет на страницу, которая показывает данные JSON.Но ничего не происходит, когда я нажимаю кнопку.Я могу получить доступ к конечной точке в своем URL браузера.

Вот как работает мое понимание.Пожалуйста, укажите, где я неправильно это понимаю.

  1. Служите index.html.

  2. У меня есть форма (кнопка "Отправить"), которая имеетPOST метод в index.html.

  3. Когда я нажимаю кнопку отправки, он должен перенаправить меня на страницу с jsonify данными.

Причина, по которой я использую jsonify, заключается в том, что это часть более крупного шага, который я пытаюсь сделать, когда я нажимаю кнопку, он запрашивает базу данных и возвращает json из resultproxy.Я думаю, что это будет связано с AJAX.Мне все еще нужно разобраться.

app.py

from flask import Flask, render_template, redirect, request, url_for, jsonify
from forms import Submit
import os
import json

app = Flask(__name__)
app.config['SECRET_KEY'] = os.urandom(12)


@app.route('/', methods=['GET', 'POST'])
def home():
    form = Submit()
    if request.method == 'POST':
        return redirect(url_for('data'))
    return render_template('index.html')


@app.route('/data')
def data():
    data = {
        'author': 'rowling',
        'book': 'harry potter'
    }
    return jsonify(data)


if __name__ == '__main__':
    app.run(debug=True)

forms.py

from flask_wtf import FlaskForm
from wtforms import validators, SubmitField


class Submit(FlaskForm):
    submit = SubmitField(label='submit')

index.html

<h1>Hello world</h1>

<br>
<br>

<form action="{{url_for ('data') }}" method="GET">
    <input type="button" value="Submit" action="{{url_for ('data') }}">
</form>

1 Ответ

1 голос
/ 04 июля 2019

Пожалуйста, взгляните на ваш шаблон, форма была определена для отправки методом GET вместо метода POST:

<form action="{{url_for ('data') }}" method="GET">

Кроме того, URL-адрес действия был установлен на /data вместо /. ИМО, вам нужно изменить эту строку следующим образом:

<form method="post">

Кроме того, вы должны добавить type="submit" к элементу <input> или <button>, чтобы он отправил форму:

<input type="submit">

Поскольку вы используете WTForms, просто используйте {{ form.submit }}, чтобы отобразить кнопку отправки. Окончательная форма будет:

<form method="post">
    {{ form.submit }}
</form>

Просто попробуйте и дайте мне знать, если это работает!

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