πŸ”§ Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Flask: простыС шаги ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ инструкции

Π§Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ с использованиСм Flask, Π²Π°ΠΌ понадобится HTML-шаблон, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ, ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π΅Π±-прилоТСния Flask, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ Π½Π°ΠΆΠ°Ρ‚ΠΈΠ΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ. Π’ΠΎΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π°, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Flask:

from flask import Flask, render_template, request

app = Flask(__name__)

@app.route("/")
def index():
    return render_template("index.html")

@app.route("/button", methods=["POST"])
def handle_button():
    # Π’Π°Ρˆ ΠΊΠΎΠ΄ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ здСсь
    return "Кнопка Π½Π°ΠΆΠ°Ρ‚Π°"

if __name__ == "__main__":
    app.run(debug=True)

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм экзСмпляр класса Flask ΠΈ опрСдСляСм Π΄Π²Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π°. ΠœΠ°Ρ€ΡˆΡ€ΡƒΡ‚ "/" ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π³Π»Π°Π²Π½ΡƒΡŽ страницу, которая содСрТит ΠΊΠ½ΠΎΠΏΠΊΡƒ, Π° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ "/button" ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ POST-запросы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½Ρ‹ ΠΏΡ€ΠΈ Π½Π°ΠΆΠ°Ρ‚ΠΈΠΈ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ.

Когда Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½Π°ΠΆΠΈΠΌΠ°ΡŽΡ‚, Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ ΠΌΠ΅Ρ‚ΠΎΠ΄ handle_button(). Π’ этом ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΊΠΎΠ΄ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ наТатия Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ. Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ просто возвращаСтся строка "Кнопка Π½Π°ΠΆΠ°Ρ‚Π°". Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эту строку ΠΈΠ»ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ свою Π»ΠΎΠ³ΠΈΠΊΡƒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ события.

Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ HTML-шаблон с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ. НиТС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ простого HTML-шаблона, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ содСрТит ΠΊΠ½ΠΎΠΏΠΊΡƒ:

<!DOCTYPE html>
<html>
<head>
    <title>My Flask App</title>
</head>
<body>
    <form action="/button" method="POST">
        <button type="submit">НаТми мСня!</button>
    </form>
</body>
</html>

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ index.html ΠΈ помСститС этот ΠΊΠΎΠ΄ Π²Π½ΡƒΡ‚Ρ€ΡŒ Π½Π΅Π³ΠΎ.

ΠžΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ΄ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ вас ΡƒΠΆΠ΅ установлСн Flask ΠΈ Π²Ρ‹ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с основами создания Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ с использованиСм Flask. Если Π²Ρ‹ Π½Π΅ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с Flask, Π²Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ΡŒΡΡ с Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠ΅ΠΉ Flask ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ настройки.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Flask

Flask - это ΠΌΠΈΠΊΡ€ΠΎΡ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° языкС программирования Python. Он позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Π²Π΅Π±-страницы ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π½Π° Π½ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ элСмСнты, Π² Ρ‚ΠΎΠΌ числС ΠΊΠ½ΠΎΠΏΠΊΠΈ.

Для создания ΠΊΠ½ΠΎΠΏΠΊΠΈ Π² Flask Π²Π°ΠΌ понадобится HTML-шаблон, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ внСшний Π²ΠΈΠ΄ ΠΊΠ½ΠΎΠΏΠΊΠΈ, ΠΈ Python-ΠΊΠΎΠ΄, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ дСйствия, связанныС с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ.

Шаг 1: БозданиС HTML-шаблона

Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π½ΠΎΠ²Ρ‹ΠΉ Ρ„Π°ΠΉΠ» с Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ΠΌ .html ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Π² Π½Π΅ΠΌ Π²Π΅Π±-страницу, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒΡΡ ΠΊΠ½ΠΎΠΏΠΊΠ°.


    <!DOCTYPE html>
    <html>
    <head>
        <title>Моя пСрвая Π²Π΅Π±-страница с Flask</title>
    </head>
    <body>
        <h1>ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Flask!</h1>
        <button>НаТми мСня!</button>
    </body>
    </html>
    

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π° создаСтся ΠΊΠ½ΠΎΠΏΠΊΠ° с тСкстом "НаТми мСня!".

Π¨Π°Π³ 2: Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° Π² Flask

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ„Π°ΠΉΠ» Python, Π³Π΄Π΅ Π²Ρ‹ опрСдСляСтС вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Flask, ΠΈ Π΄ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ дСйствия, связанныС с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ.


    from flask import Flask, render_template
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        return render_template('index.html')
    
    if __name__ == '__main__':
        app.run()
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ для ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠ³ΠΎ URL-адрСса, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ Π½Π°ΡˆΡƒ Π²Π΅Π±-страницу с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ.

Π¨Π°Π³ 3: Запуск прилоТСния Flask

ΠŸΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Π» ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ вашСго ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Flask. Π—Π°Ρ‚Π΅ΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚Π΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Flask:


    $ python app.py
    

ПослС запуска вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Flask Π±ΡƒΠ΄Π΅Ρ‚ доступно ΠΏΠΎ адрСсу http://localhost:5000.

Π¨Π°Π³ 4: НаТатиС Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, ΠΊΠΎΠ³Π΄Π° вашС ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Flask Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚, ΠΎΡ‚ΠΊΡ€ΠΎΠΉΡ‚Π΅ Π²Π΅Π±-Π±Ρ€Π°ΡƒΠ·Π΅Ρ€ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΉΠ΄ΠΈΡ‚Π΅ ΠΏΠΎ адрСсу http://localhost:5000. Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π²Π°ΡˆΡƒ Π²Π΅Π±-страницу с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ.

Π§Ρ‚ΠΎΠ±Ρ‹ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для ΠΊΠ½ΠΎΠΏΠΊΠΈ, Π²Π°ΠΌ понадобится JavaScript ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ„ΠΎΡ€ΠΌΡ‹ Python. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ„ΠΎΡ€ΠΌΡ‹ Python ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ запросы POST ΠΎΡ‚ ΠΊΠ½ΠΎΠΏΠΊΠΈ ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ дСйствия Π½Π° сСрвСрС.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° Ρ„ΠΎΡ€ΠΌΡ‹ Python:


    from flask import Flask, render_template, request
    
    app = Flask(__name__)
    
    @app.route('/', methods=['GET', 'POST'])
    def index():
        if request.method == 'POST':
            # Π’Π°Ρˆ ΠΊΠΎΠ΄ для ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ дСйствий, связанных с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ
            return 'Кнопка Π±Ρ‹Π»Π° Π½Π°ΠΆΠ°Ρ‚Π°!'
        return render_template('index.html')
    
    if __name__ == '__main__':
        app.run()
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ добавляСм ΠΌΠ΅Ρ‚ΠΎΠ΄ POST ΠΊ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Ρƒ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ запросы, связанныС с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ. Когда ΠΊΠ½ΠΎΠΏΠΊΠ° наТимаСтся, Π½Π° сСрвСр отправляСтся POST-запрос, ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ„ΠΎΡ€ΠΌΡ‹ Python выполняСт ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ дСйствия.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Flask. Π­Ρ‚ΠΎΡ‚ процСсс Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ созданиС HTML-шаблона с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚Π° Π² Flask, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ этот шаблон. Π’Ρ‹ Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ„ΠΎΡ€ΠΌΡ‹ Python, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ дСйствия, связанныС с ΠΊΠ½ΠΎΠΏΠΊΠΎΠΉ Π½Π° сСрвСрС.

Π£Π΄Π°Ρ‡ΠΈ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅!

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΊΠ½ΠΎΠΏΠΎΠΊ Flask

Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ Flask / #2 - Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° страниц ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ стилСй

ΠžΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Ρ„ΠΎΡ€ΠΌΡ‹ рСгистрации Flask

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

πŸ”§ Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ Π² Flask: простыС шаги ΠΈ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹Π΅ инструкции