Найти Π² Π”Π·Π΅Π½Π΅
Анастасия Π‘ΠΎΡ„Ρ‚

🐍 Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Python (Flask / FastAPI) Π·Π° ΠΎΠ΄ΠΈΠ½ Π²Π΅Ρ‡Π΅Ρ€

с ΠΆΠΈΠ²Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ, ΡˆΡƒΡ‚ΠΊΠ°ΠΌΠΈ ΠΈ большим ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ красиво Π’Ρ‹, вСроятно, ΡƒΠΆΠ΅ писал ΠΏΠ°Ρ€Ρƒ скриптов Π½Π° Python. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, парсил ΠΊΠΎΡ‚ΠΈΠΊΠΎΠ² с сайтов ΠΈΠ»ΠΈ считал Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹ ΠΈΠ· Excel'я. А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ…ΠΎΡ‡Π΅ΡˆΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Π²Π΅Π±, Π½ΠΎ боишься Django? НС бойся. БСгодня ΠΌΡ‹ сдСлаСм Ρ‚Π²ΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Flask ΠΈ FastAPI β€” быстро, с ΠΊΠ°ΠΉΡ„ΠΎΠΌ ΠΈ Π΄Π°ΠΆΠ΅ с API-шкой. Π—Π° ΠΎΠ΄ΠΈΠ½ Π²Π΅Ρ‡Π΅Ρ€. Π‘Π΅Ρ€ΡŒΡ‘Π·Π½ΠΎ. Π’Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡˆΡŒΡΡ: pip install flask from flask import Flask # Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ основной класс
app = Flask(__name__) # Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅
@app.route('/') # Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡƒΡ‚ΡŒ
def hello():
return 'ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!' # Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ тСкст
if __name__ == '__main__':
app.run(debug=True) # ЗапускаСм сСрвСр с ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ ΠžΡ‚ΠΊΡ€ΠΎΠΉ http://localhost:5000 β€” ΠΈ наслаТдайся! Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ ΠΏΠ°ΠΏΠΊΡƒ templates, ΠΈ Π² Π½Π΅ΠΉ Ρ„Π°ΠΉΠ» hello.html: <h1>ΠŸΡ€ΠΈΠ²Π΅Ρ‚, {{ name }}!</h1> Код Π² Flask: from flask import render_template, request
@app.route('/hello/<name>')
def greet(name):
return render_template('hello.html', name=name) πŸ‘‰ Π—Π°ΠΉΠ΄ΠΈ Π½Π° http://localhost:5000/hello/АндрСй
ОглавлСниС

с ΠΆΠΈΠ²Ρ‹ΠΌΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ, ΡˆΡƒΡ‚ΠΊΠ°ΠΌΠΈ ΠΈ большим ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΠΌ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ красиво

πŸš€ Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π’Ρ‹, вСроятно, ΡƒΠΆΠ΅ писал ΠΏΠ°Ρ€Ρƒ скриптов Π½Π° Python. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, парсил ΠΊΠΎΡ‚ΠΈΠΊΠΎΠ² с сайтов ΠΈΠ»ΠΈ считал Π·Π°Ρ€ΠΏΠ»Π°Ρ‚Ρ‹ ΠΈΠ· Excel'я. А Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ Ρ…ΠΎΡ‡Π΅ΡˆΡŒ ΠΏΠ΅Ρ€Π΅ΠΉΡ‚ΠΈ Π² Π²Π΅Π±, Π½ΠΎ боишься Django? НС бойся. БСгодня ΠΌΡ‹ сдСлаСм Ρ‚Π²ΠΎΠ΅ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Flask ΠΈ FastAPI β€” быстро, с ΠΊΠ°ΠΉΡ„ΠΎΠΌ ΠΈ Π΄Π°ΠΆΠ΅ с API-шкой. Π—Π° ΠΎΠ΄ΠΈΠ½ Π²Π΅Ρ‡Π΅Ρ€. Π‘Π΅Ρ€ΡŒΡ‘Π·Π½ΠΎ.

πŸ›  Π§Ρ‚ΠΎ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π΄Π΅Π»Π°Ρ‚ΡŒ?

Π’Ρ‹ Π½Π°ΡƒΡ‡ΠΈΡˆΡŒΡΡ:

  1. πŸ“„ Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ простыС HTML-страницы
  2. βœ‰οΈ ΠŸΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, имя)
  3. πŸ“¬ ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Β«ΠŸΡ€ΠΈΠ²Π΅Ρ‚, Иван!Β»)
  4. πŸ”Œ Π‘ΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ API с JSON'ΠΎΠΌ
  5. βœ… Π”ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π²Π°Π»ΠΈΠ΄Π°Ρ†ΠΈΡŽ ΠΈ структуру Π΄Π°Π½Π½Ρ‹Ρ…
  6. 🐘 Π Π°Π·Π²Π΅Ρ€Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ это Ρ‡ΡƒΠ΄ΠΎ Π½Π° сСрвСрС

πŸ”₯ Π£Ρ€ΠΎΠΊ 1. Flask: Π‘Π°ΠΉΡ‚ Β«ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€Β»

Установка

pip install flask

Код (hello.py)

from flask import Flask # Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠ΅ΠΌ основной класс

app = Flask(__name__) # Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

@app.route('/') # Π£ΠΊΠ°Π·Ρ‹Π²Π°Π΅ΠΌ ΠΏΡƒΡ‚ΡŒ
def hello():
return 'ΠŸΡ€ΠΈΠ²Π΅Ρ‚, ΠΌΠΈΡ€!' # Π’ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌ тСкст

if __name__ == '__main__':
app.run(debug=True) # ЗапускаСм сСрвСр с ΠΎΡ‚Π»Π°Π΄ΠΊΠΎΠΉ

Π§Ρ‚ΠΎ происходит:

  • @app.route('/') β€” Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Flask'Ρƒ: "Π­ΠΉ, ΠΊΠΎΠ³Π΄Π° Π·Π°ΠΉΠ΄ΡƒΡ‚ Π½Π° ΠΊΠΎΡ€Π΅Π½ΡŒ сайта β€” запускай hello()".
  • debug=True β€” автоматичСски пСрСзапускаСт сСрвСр, ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ‹ ΠΏΡ€Π°Π²ΠΈΡˆΡŒ ΠΊΠΎΠ΄.

ΠžΡ‚ΠΊΡ€ΠΎΠΉ http://localhost:5000 β€” ΠΈ наслаТдайся!

πŸ§ͺ Π£Ρ€ΠΎΠΊ 2. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‘ΠΌ Π΄Π°Π½Π½Ρ‹Π΅ Π² HTML

Π‘ΠΎΠ·Π΄Π°Ρ‘ΠΌ ΠΏΠ°ΠΏΠΊΡƒ templates, ΠΈ Π² Π½Π΅ΠΉ Ρ„Π°ΠΉΠ» hello.html:

<h1>ΠŸΡ€ΠΈΠ²Π΅Ρ‚, {{ name }}!</h1>

Код в Flask:

from flask import render_template, request

@app.route('/hello/<name>')
def greet(name):
return render_template('hello.html', name=name)

πŸ‘‰ Π—Π°ΠΉΠ΄ΠΈ Π½Π° http://localhost:5000/hello/АндрСй β€” ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠΏΡ€ΠΈΠ²Π΅Ρ‚.

πŸ’¬ Π£Ρ€ΠΎΠΊ 3. ΠžΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Ρ„ΠΎΡ€ΠΌΡ‹

Π€ΠΎΡ€ΠΌΠ° HTML (templates/form.html):

<form action="/submit" method="post">
<input name="username" placeholder="Имя">
<button type="submit">ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ</button>
</form>

Flask:

@app.route('/form')
def form():
return render_template('form.html')

@app.route('/submit', methods=['POST'])
def submit():
name = request.form['username']
return f'ΠŸΡ€ΠΈΠ²Π΅Ρ‚, {name}!'

🎯 Π—Π΄Π΅ΡΡŒ Ρ‚Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΡˆΡŒ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· Ρ„ΠΎΡ€ΠΌΡ‹ Ρ‡Π΅Ρ€Π΅Π· request.form.

🧠 Π£Ρ€ΠΎΠΊ 4. API Π½Π° FastAPI

FastAPI β€” это быстрый, соврСмСнный Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ для создания API.

Установка:

pip install fastapi uvicorn

ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ API:

from fastapi import FastAPI

app = FastAPI()

@app.get('/')
def read_root():
return {"message": "ΠŸΡ€ΠΈΠ²Π΅Ρ‚, API!"}

Запуск:

uvicorn filename:app --reload

Π—Π°ΠΉΠ΄ΠΈ Π½Π° http://localhost:8000 ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ JSON.

πŸ§‘β€πŸ’» Π£Ρ€ΠΎΠΊ 5. Валидация ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ

FastAPI ΡƒΠΌΠ΅Π΅Ρ‚ Π²Π°Π»ΠΈΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ Ρ‡Π΅Ρ€Π΅Π· Pydantic:

from pydantic import BaseModel

class User(BaseModel):
name: str
age: int

@app.post('/user')
def create_user(user: User):
return {"message": f"ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ {user.name}, возраст {user.age}"}

ΠžΡ‚ΠΏΡ€Π°Π²ΡŒ JSON:

{
"name": "Анна",
"age": 28
}

πŸ›  ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π·Π°Π΄Π°Ρ‡

🧩 Новичок:

  1. Π‘Π΄Π΅Π»Π°ΠΉ страницу ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΉ связи
  2. Π₯Ρ€Π°Π½ΠΈ сообщСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ Π² словарС
  3. ПокаТи ΠΈΡ… Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ страницС

πŸ’Ό ΠŸΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΉ:

  1. Π‘Π΄Π΅Π»Π°ΠΉ API для создания/удалСния Π·Π°Π΄Π°Ρ‡ (таск-Ρ‚Ρ€Π΅ΠΊΠ΅Ρ€)
  2. ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈ SQLite ΠΈΠ»ΠΈ PostgreSQL ΠΈ сохрани Π΄Π°Π½Π½Ρ‹Π΅

🌐 Как это Ρ€Π°Π·Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ?

Π₯ΠΎΡ‡Π΅ΡˆΡŒ ΠΏΠΎΡ…Π²Π°ΡΡ‚Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ·ΡŒΡΠΌ? Π Π°Π·Π²Π΅Ρ€Π½ΠΈ:

  • Railway.app β€” просто Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ GitHub-Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ
  • Render.com β€” ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈ FastAPI с PostgreSQL
  • Deta.space / Heroku (Ссли успСл) β€” Π½Π°ΠΆΠ°Π» ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ всё Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚

😎 Π˜Ρ‚ΠΎΠ³

Π’Ρ‹:

βœ… Научился ΠΏΠΈΡΠ°Ρ‚ΡŒ простыС сайты

βœ… Π‘Π΄Π΅Π»Π°Π» API

βœ… Понял, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ запросы ΠΈ Ρ„ΠΎΡ€ΠΌΡ‹

βœ… ΠŸΠΎΠ΄Ρ€ΡƒΠΆΠΈΠ»ΡΡ с Flask ΠΈ FastAPI

βœ… Π“ΠΎΡ‚ΠΎΠ² ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΡˆΠ°Π³Ρƒ β€” Π±Π°Π·Π°ΠΌ Π΄Π°Π½Π½Ρ‹Ρ…, Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ дСплою

Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Python (Flask / FastAPI) Π·Π° ΠΎΠ΄ΠΈΠ½ Π²Π΅Ρ‡Π΅Ρ€
Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ Π²Π΅Π±-ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Python (Flask / FastAPI) Π·Π° ΠΎΠ΄ΠΈΠ½ Π²Π΅Ρ‡Π΅Ρ€