кнопка отправки нескольких колб - PullRequest
0 голосов
/ 24 августа 2018

Я использую flask и jinja2, чтобы создать простое веб-приложение для обслуживания простого алгоритма sklearn для прогнозов.

В моем html мне нужно получить 4 переменные: идентификатор клиента, textid, textid1, textid2

В настоящее время это работает, когда все подключено к одной кнопке отправки.Но мне бы хотелось иметь две кнопки отправки, чтобы идентификатор клиента отправлялся вверху страницы, а текстовые сообщения внизу страницы.Когда я пытаюсь использовать две кнопки отправки, это приводит к обновлению страницы, и я не могу подключить идентификатор клиента к 3 переменным textid.

    <div class="col">
        <div class="form-group">
        <label>Enter Customer ID or leave blank for random selection </label>
         <form method="POST">
            <input name="text", id='text', placeholder="Client ID #", value="{{ client_id|round|int }}" >
            <br>
            <label>Enter 3 suggestions</label>
            <br>
            <input name="textid", placeholder="Suggested Model ID #", value="{{ request.form['textid'] }}"/>
            <input name="textid1", placeholder="Suggested Model ID #", value="{{ request.form['textid1'] }}"/>
            <input name="textid2", placeholder="Suggested Model ID #", value="{{ request.form['textid2'] }}"/>

            <input type="submit" >
          </form>
      </div>

Я просто беру его в флягу следующим образом:

@app.route('/suggestion', methods=['GET', 'POST'])
def with_suggestions():

try:
    client_id=request.form['text']

except:
#custom function when client id is not entered to get random one
    client_id = recommender.random_client_id()
try:
    model_id=request.form['textid']
    model_id1=request.form['textid1']
    model_id2=request.form['textid2']
#other functional code after this

Как я могу разбить HTML, чтобы получить две кнопки отправки?Спасибо !!

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

Теперь, когда вы обновили свой код, все, что вам нужно сделать, это ввести скрытые входные данные, чтобы определить, откуда произошел щелчок. Также удалите косую черту из вашего url_for, как я сделал ниже

<div class="col">
<div class="form-group">
<label>Enter Customer ID or leave blank for random selection </label>

<form method="POST" action={{url_for('suggestion')}}>
    <input name="text", id='text', placeholder="Client ID" >
    <input type="hidden" name="btn_identifier" value="client_id_identifier" />
    <input type="submit" >
</form>
<form method="POST" action={{url_for('suggestion')}}>
    <input name="textid", id='text', placeholder="Textid1">
    <input name="textid1", id='text', placeholder="textid2  ">
    <input name="textid2", id='text', placeholder="Textid3">
    <input type="hidden" name="btn_identifier" value="text_id_identifier" />
    <input type="submit" value="Submit">
</form>

main.py

from flask import Flask
from flask import render_template, url_for, request, redirect
app = Flask(__name__)

@app.route('/suggestion', methods=['GET', 'POST'])
def with_suggestions():
    if request.methods == 'POST':
        if request.form['btn_identifier'] == 'client_id_btn':
            try:
                client_id=request.form['text']
            except:
                # I think this would go in the second elif statement
                model_id=request.form['textid']
                model_id1=request.form['textid1']
                model_id2=request.form['textid2']
        elif request.form['btn_identifer'] == 'text_id_btn':
            # run some code to handle a click that was originated from the second button
    return render_template('index.html')        

if __name__ == '__main__':
    app.run()
0 голосов
/ 24 августа 2018

Я внес некоторые изменения в ваш код.

index.html

<div class="col">
    <div class="form-group">
    <label>Enter Customer ID or leave blank for random selection </label>

    <form method="POST" action={{url_for('suggestion')}}>
        <input name="text", id='text', placeholder="Client ID" >
        <input type="submit" >
    </form>
    <form method="POST" action={{url_for('suggestion')}}>
        <input name="textid", id='text', placeholder="Textid1">
        <input name="textid1", id='text', placeholder="textid2  ">
        <input name="textid2", id='text', placeholder="Textid3">
        <input type="submit" value="Submit">
    </form>
  </div>

main.py

from flask import Flask
from flask import render_template, url_for, request, redirect
app = Flask(__name__)

@app.route('/suggestion', methods=['GET', 'POST'])
def suggestion():
    if request.method == 'POST':
        try:
            client_id=request.form['text']
        except:
            model_id=request.form['textid']
            model_id1=request.form['textid1']
            model_id2=request.form['textid2']
    return render_template('index.html')        

if __name__ == '__main__':
    app.run()

Примечание: значения сохраняются в переменной,распечатать чтобы увидеть

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