Я собрал страницу с формой автозаполнения, и когда я пытаюсь отправить информацию, страница просто обновляется, не идя по правильному маршруту. Итак, если кто-то вводит «Ab» в форму, форма правильно предлагает «Abc». Если они выбирают «Abc», а затем нажимают «Отправить», я пытаюсь перенаправить на /foo/Abc.
.
Настой:
from flask import Flask, jsonify, Response, render_template, request, redirect
import json
from flask_wtf import Form
from wtforms import TextField, BooleanField, PasswordField, TextAreaField, SubmitField, validators
from engine import *
app = Flask(__name__)
app.static_folder = 'static'
foo_list = ['Abc', 'Bcd', 'Cde', 'Def']
@app.route("/", methods=['GET', 'POST'])
def index():
form = SearchForm(request.form)
if form.validate_on_submit():
form_data = form.autocomp.data
return redirect(url_for('/foo/', form_data))
return render_template('index.html', form=form)
@app.route("/foo/<title>")
def randomFunction(title):
#code that it runs
return render_template('foo.html')
class SearchForm(Form):
autocomp = TextField('Enter Search Term', id='foo_autocomplete')
submit = SubmitField('Search')
@app.route('/_autocomplete', methods=['GET'])
def autocomplete():
return Response(json.dumps(foo_list), mimetype='application/json')
if __name__ == "__main__":
app.run(debug=True)
HTML:
<form method="POST" novalidate>
{{ form.autocomp.label }}: {{ form.autocomp }} {{ form.submit() }}
</form>
<script>
$(function() {
$.ajax({
url: '{{ url_for("autocomplete") }}'
}).done(function (data){
$('#foo_autocomplete').autocomplete({
source: data,
minLength: 2
});
});
});
</script>
EDIT:
Разобрался. Изменен индексный код маршрута на:
def index():
form = SearchForm(request.form)
if request.method == 'POST':
title = form.autocomp.data.replace(" ", "%20")
return redirect('http://127.0.0.1:5000/rec/' + title)