как передать переменную из html в бэкэнд flask - PullRequest
0 голосов
/ 29 марта 2020

существует так много элементов td с тегом, и я хочу знать, что пользователь щелкнул по какому элементу, и я хочу перейти от html к бэкэнду и обработать его с помощью выбора пользователя на бэкэнде;

это мой html;

<a href="/selected" ????><td>{{ options1 }}</td></a>
<a href="/selected"><td>{{ options2 }}</td></a>
<a href="/selected"><td>{{ options3 }}</td></a>
<a href="/selected"><td>{{ options4 }}</td></a>
<a href="/selected"><td>{{ options5 }}</td></a>
<a href="/selected"><td>{{ options6 }}</td></a>

когда пользователь щелкнул один, я хочу отправить его бэкэнду;

@app.route('/selected', methods=['GET', 'POST'])
def selected():
selected_option = request.args.get('????')
return render_template("selected.html", selected_option=selected_option)

как я могу заполнить вопросительные знаки?

1 Ответ

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

Наличие отдельных переменных для options1, options2 и т. Д. c, вероятно, затрудняет это по нескольким причинам:

  • Вам потребуется вручную обновить жесткое кодирование шаблона для добавления дополнительных параметров.
  • Часть URL каждого параметра может отличаться от текста ссылки.

Вы можете sh определить свои параметры в словарь:

sections = {'first-option': 'I am the first option',
            'second-option': 'Click me for fun and profit',
            'third-option': 'All flights have been cancelled',
           }

Теперь на странице, которая генерирует вашу панель ссылок, если вы передадите ее через:

return render_template('some_page.html', SECTIONS=sections)

Затем вы можете сделать что-то вроде:

{% for key, value in SECTIONS.items() %}
  <a href="{{url_for('selected', section=key)}}">{{value}}</a>
{% endfor %}

Это автоматически сгенерирует правильные URL-адреса, совместимые со следующей функцией просмотра:

@app.route('/selected/<section>')
def selected(section):
    # Assuming the first URL:
    print (section) # 'first-option'
    print (sections[section]) # 'I am the first option'

    return render_template("selected.html", selected_option=section)

Вы также можете sh взглянуть на эту суть , которая занимает концепция немного дальше.

Здесь также используется контекстный процессор для вставки этой переменной SECTIONS во все страницы, вместо передачи ее отдельным функциям render_template.

...