Flask - Получить информацию о кликнувшей ссылке и отобразить ее - PullRequest
0 голосов
/ 19 мая 2018

Как я могу получить текст ссылки, по которой щелкнули, в функцию app.route?

Например: скажем, у меня есть список ссылок, отображающих все ссылки на один и тот же URL-адрес, но загружающие разный контент.

<li><a href="/animals">cat</a></li>
<li><a href="/animals">dog</a></li>
<li><a href="/animals">dragon</a></li>

Когда я нажимаю 'cat', мне нужно получить слово 'cat' вместе с шаблоном рендеринга для / animals

@app.route('/animals', methods=['GET', 'POST'])
def animals():
    selected_animal = get_clicked_animal_name_from_previous_page()
    return render_template(animals.html', title='Animal Details', animal=selected_animal)

Возможна ли такая функция, как get_clicked_animal_name_from_previous_page ()?

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Вы можете немного изменить href для каждого animal, чтобы перенаправить на маршрут animals/<animal>.Таким образом, <animal_type> будет передано функции маршрута для последующего использования:

<li><a href="/animals/cat">cat</a></li>
<li><a href="/animals/dog">dog</a></li>
<li><a href="/animals/dragon">dragon</a></li>

Затем в приложении:

@app.route('/animals/<animal>', methods=['GET'])
def animals(animal):
  return render_template('animals.html', title='Animal Details', animal=animal)
0 голосов
/ 19 мая 2018

Вы можете передать аргумент через request.args следующим образом:

<li><a href="{{url_for('animals', type='cat')}}">cat</a></li>
<li><a href="{{url_for('animals', type='dog')}}">dog</a></li>
<li><a href="{{url_for('animals', type='dragon')}}">dragon</a></li>

И получить его следующим образом:

@app.route('/animals', methods=['GET', 'POST'])
def animals():
    selected_animal = request.args.get('type')
    print(selected_animal) # <-- should print 'cat', 'dog', or 'dragon'
    return render_template(animals.html, title='Animal Details', animal=selected_animal)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...