Я пытаюсь выяснить, как получить значения нескольких форм, подделать их вместе и перенести в 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>