Объединить несколько выходных WTforms в одну переменную JS и получить его в колбу Python - PullRequest
0 голосов
/ 03 мая 2019

Я пытаюсь выяснить, как получить значения нескольких форм, подделать их вместе и перенести в python с помощью запросов на флягу. Я хотел бы иметь только одну кнопку отправки. Когда она нажата, все выбранные опции во всех формах будут зафиксированы на стороне колбы одновременно.

Ожидаемый результат :

В Python я должен иметь возможность присваивать переменной выбор пользователя в каждой форме вместе с именем записи пользователя. Я ожидаю захватить с колбой вывод, такой как сообщение журнала консоли в функции JS. Таким образом, если пользователь вводит свое имя, делает выбор в форме 1 и форме 2, переменная python o должна быть списком, например ['Mary','1','5']. Кроме того, было бы лучше получить словарь, содержащий имена форм, например, {'name':'Mary', 'form_1':'1','form_2':'6'} было бы здорово.

Я использую функцию javascript, чтобы собрать все выбранные опции в одну переменную score и распечатать ее в console.log. Это то, что я хотел бы переслать и зафиксировать в колбе.


Вот мой файл колбы

from flask import Flask, render_template, request
import time


app = Flask(__name__)
app.static_url_path='/static'



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


@app.route('/response', methods=['GET', 'POST'])
def response():
        w = request.form['say']
        return render_template('index_2a.html', say=request.form['say'])

@app.route('/page', methods=['GET', 'POST'])
def page():
        # THIS IS WHAT I DON'T KWNO ???
        o = request.form.getlist('options')
        o1= request.form.getlist('submit_it')
        o2= request.form.getlist('design')
        o3 = request.form.getlist('options2')
        o4 = request.form.getlist('footer')
        print(o,o1,o2,o3,o4)
        return render_template('index_2a.html')


if __name__ == "__main__":
        app.run(host='127.0.0.1',port=8899)

и соответствующий шаблон index_2a.html:

<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>

    <style type="text/css">

.node circle {
  cursor: pointer;
  fill: #fff;
  stroke: steelblue;
  stroke-width: 1.5px;
}

.node text {
  font-size: 11px;
}

path.link {
  fill: none;
  stroke: #ccc;
  stroke-width: 1.5px;
}

    </style>
  </head>
  <body>
    <div id="body">
      <div id="footer">

	    <form action="{{ url_for('response') }}" method="post">
			<label for="say"> Enter your name:</label><br>
			<input id="say" name="say" ><br>
		</form> 


	<form id="brand" action="{{ url_for('page') }}" method="post" >
		<p>
		<input class="q1" type="radio" name="options" id="option1" value='1'> Option1 
		<input class="q1" type="radio" name="options" id="option2" value='2'> Option2 
		<input class="q1" type="radio" name="options" id="option3" value='3'> Option3 

		</p>

	</form>

	<form id="design" action="{{ url_for('page') }}" method="post" onsubmit="return submitForm(this);">
		<p>
		<input  class="q2" type="radio" name="options" id="option4" value='4'> Option4
		<input  class="q2" type="radio" name="options" id="option5" value='5'> Option5
		<input  class="q2" type="radio" name="options" id="option6" value='6'> Option6
		</p>

		<p><button name='submit_it' onclick="check()" method="post">Submit my scores!</button> </p>
	</form>

    </div>
    <script type="text/javascript">

var score=[];
function check () {
	var users = document.getElementsByName("say");
    var methods = document.getElementsByName("options");
	score.push( users[0].value );
    for (var i=0; i<methods.length; i++) {
         if (methods[i].checked == true) {
             score.push(methods[i].value);
            }
  		}
	console.log(score.toString())
	return score.toString()
}

function submitForm() {
  return confirm('Do you really want to submit the form?\n'+ score.toString());
}



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