Flask - передача выбранного поля между маршрутами для генерации запроса и отображения результатов - PullRequest
0 голосов
/ 09 марта 2020

Я создаю приложение, которое будет отображать раскрывающиеся списки year_from и year_to на моей домашней странице / странице индекса и возвращать результаты сопоставления на другой странице.

Желаемый поток: Пользователю представлены 2 раскрывающихся списка с предварительно заполненными данными. Пользователь выбирает диапазон года на индексном маршруте. Этот диапазон года будет затем запрашивать базу данных и возвращать все результаты, которые находятся в диапазоне между годами в списке маршрутов.

Я могу добраться до точки, где я могу запрашивать мою БД по годам и годам и представлять их в поле выбора запроса flask -wtf.

Проблема: Я не могу подобрать выбранные пользователем поля со страницы индекса и использовать их для генерации запроса и возврата результатов на странице моего списка. Выбранные пользователем поля не передаются.

Что мне не хватает?

Маршруты

from flask import render_template, flash, redirect, url_for, request
from app import app
from app.models import Listingyear
from app.forms import YearForm

@app.route('/', methods=['GET', 'POST'])
@app.route('/index')
def index():
    form = YearForm()
    if form.validate_on_submit():
        year_from = request.form.get(year_from_select)
        year_to = request.form.get(year_to_select)
        return redirect (url_for('listing'))
    return render_template('index.html', form=form) 

@app.route('/listing', methods=['GET', 'POST'])
def listing():
    return render_template('listing.html')

Формы

from flask_wtf import FlaskForm
from wtforms import SubmitField, SelectField
from wtforms.validators import DataRequired
from wtforms_alchemy.fields import QuerySelectField
from app.models import Listingyear

def Listingyear_from_query(): #for query_factory, sort year ascending, will update later
    return Listingyear.query

def Listingyear_to_query(): #for query_factory, sort year descending, will update later
    return Listingyear.query

class YearForm(FlaskForm):
    year_from_select = QuerySelectField(query_factory=Listingyear_from_query, allow_blank=False, get_label='year', validators=[DataRequired()])
    year_to_select = QuerySelectField(query_factory=Listingyear_to_query, allow_blank=False, get_label='year', validators=[DataRequired()])
    submit = SubmitField('Search')

Индекс

{% extends "base.html" %}

{% block content %}
<h1>My App</h1>
<form action="{{ url_for('listing') }}" method="post">
    {{ form.hidden_tag() }}
    {{ form.year_from_select }}
    {{ form.year_to_select }}
    <p>{{ form.submit() }}</p>
</form>
{% endblock %}

1 Ответ

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

{ ссылка }

Это решает вопрос, поскольку показывает, как просто выбрать значение, введенное пользователем, и передать его другому маршруту.

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