Ответ 1
В вашем маршруте не указывается, как заполнить больше, чем только один аргумент past_val
. Флажок не может магически создать URL-адрес, который передаст два аргумента, если вы не дадите ему шаблон с двумя аргументами.
У меня есть кнопка ввода в форме, которая, когда ее отправленная должна перенаправлять два параметра search_val
и i
, в функцию more_results()
(см. ниже), но я получаю ошибку типа при создании wsgi,
Ошибка: TypeError: more_results() takes exactly 2 arguments (1 given)
HTML:
<form action="{{ url_for('more_results', past_val=search_val, ind=i ) }}" method=post>
<input id='next_hutch' type=submit value="Get the next Hunch!" name='action'>
</form>
функция колбы:
@app.route('/results/more_<past_val>_hunches', methods=['POST'])
def more_results(past_val, ind):
if request.form["action"] == "Get the next Hunch!":
ind += 1
queried_resturants = hf.find_lunch(past_val) #method to generate a list
queried_resturants = queried_resturants[ind]
return render_template(
'show_entries.html',
queried_resturants=queried_resturants,
search_val=past_val,
i=ind
)
Любая идея о том, как пройти ошибку сборки?
Создание ссылки на URL-адрес приложения Flask в шаблоне jinja2
для использования нескольких параметров с url_for()
Ошибка сборки с переменными и url_for в Flask
аналогичные сборки erros
В качестве побочного примечания, цель функции - перебирать список, когда кто-то нажимает кнопку "следующая страница". Я передаю переменную i
, поэтому у меня есть ссылка, чтобы продолжать увеличивать ее по списку. Есть ли метод фляги/джиньи 2, который будет работать лучше? Я просмотрел функцию cycling_list, но, похоже, не может быть использован для визуализации страницы, а затем повторно отобразить ее с помощью cycling_list.next()
.
В вашем маршруте не указывается, как заполнить больше, чем только один аргумент past_val
. Флажок не может магически создать URL-адрес, который передаст два аргумента, если вы не дадите ему шаблон с двумя аргументами.
Также возможно создание маршрутов, поддерживающих переменное количество аргументов, путем задания значений по умолчанию некоторым аргументам:
@app.route('/foo/<int:a>')
@app.route('/foo/<int:a>/<int:b>')
@app.route('/foo/<int:a>/<int:b>/<int:c>')
def test(a, b=None, c=None):
pass