Как передать значения параметров выбора из html — формы в колбу?

#python #html #flask

Вопрос:

 Flask
 

Как вы можете видеть мой код колбы, у меня есть два значения «запустить конвейер» и «проверить состояние и результат конвейера», но когда я выполняю сценарий колбы, он открывает мой html-код в браузере, и когда я выбираю любую операцию, подобную «проверить состояние и результат конвейера», она должна возвращать мне ту же строку, но она не возвращает строку, она возвращает только html-страницу, которую я поместил в мое другое состояние. Кто-нибудь может подсказать, в чем проблема?

 from flask import Flask, request, render_template
app= Flask(__name__)
#@app.route('/')
@app.route('/',methods=['GET'])
def hello_world():
    return render_template('index.html')
@app.route('/check', methods=['GET','POST'])
def check():
    if request.method=='POST':
        Operations=request.form['Operations']
        
        if(Operations=="Run Pipeline"):

            return ('index.html', Operations)

        elif (Operations=="Check state and result of pipeline"):
            
            return ('index.html', Operations)
    else:
        return render_template('index.html')
if __name__=='__main__':
    app.run(debug=True)
 

HTML

 <!DOCTYPE html>

<html lang="en-US">

<head>

    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>My Title</title>

</head>

<body>

<h1 style="background-color:blue;", title="This is to run and check state of azure devops pipelines using one-click">Azure Devops Pipeline</h1>
<hr>


<p>Choose Options to perform operation on pipeline:</p>



<form action="{{url_for('check')}}",method="post">

<!-- <label for='Operations'>Choose the operation to perform</label> -->
    <Select name="Operations" id='Operations' required='required'>

        <option value="Run Pipeline">Run Pipeline</option>
        <option value="Check state and result of pipeline">Check state and reult of pipeline</option>
    </Select><br><br>

    <button id="sub" type='submit'>Click me</button>

</form>



</body>
<hr>
</html>
 

Ответ №1:

Проблема в том, что в вашей index.html строке 23 после URL-адреса для действий есть дополнительная запятая

Ваш html:

 <form action="{{url_for('check')}}",method="post">
 

Чинить:

 <form action="{{url_for('check')}}" method="post">
 

Хотя, когда вы исправите это, выберите значение в форме и отправьте его. Вы получите это в результате введите описание изображения здесь

Я не уверен, каким вы хотите видеть результат, поэтому я оставлю его там.

Комментарии:

1. хорошо, это было моей ошибкой, это была синтаксическая ошибка, я хочу, чтобы при нажатии на кнопку запустить конвейер, он должен напечатать это в браузере, как получить это значение, потому что он выполняет только другое условие. а как насчет этого? Операции=запрос.форма[‘Операции’] если(Операции==»Запустить конвейер»): возврат (‘index.html», Операции) почему я не получаю операции= «Запустить конвейер», когда я выбираю «Запустить конвейер», Есть ли способ получить это?

2. хорошо, я получил ответ, я удалил другую часть, а затем я также удалил index.html из каждого заявления о возврате. Вместо просьбы. форма я использовал request.form.get(‘Операции), и я получил желаемый o/p.