کار با Blueprint CLI در Flask 3.0

flask 3.0 blueprint cli tutorial
20 آبان 1403

در نسخه جدید فریم‌ورک Flask یعنی Flask 3.0، قابلیت‌های جذابی اضافه شده است. یکی از این قابلیت‌ها استفاده از Blueprint و CLI است که می‌تونه زندگی یه برنامه‌نویس رو خیلی ساده‌تر کنه. اگر با Flask کار کرده باشی، حتماً به اهمیت Blueprint در طراحی و سازماندهی پروژه پی بردی. به کمک این کامپوننت می‌تونیم پروژه‌های بزرگی رو به چندین بخش مجزا تقسیم کنیم که هر بخش به صورت مستقل قابل توسعه و نگهداری است.

اما CLI چیه؟ توی نسخه‌های جدید Flask، امکان اجرای دستورهای خاص با استفاده از Command Line Interface یا همون CLI اضافه شده. این قابلیت به شما اجازه می‌ده که بدون نیاز به اجرای دستی هر بار، یک سری از وظایف تکراری رو با یک دستور ساده اجرا کنید.

حالا فرض کنید بخوایم یک برنامه Flask رو بنویسیم که چندین بخش مختلف داره و می‌خواهیم یک CLI برای مدیریت این بخش‌ها بسازیم. بیاید به یک نمونه کد نگاه کنیم تا بهتر بفهمیم چطور می‌تونیم از این قابلیت‌ها استفاده کنیم.

نمونه کد استفاده از Blueprint و CLI در Flask 3.0

from flask import Flask, Blueprint
from flask.cli import with_appcontext
import click

app = Flask(__name__)

bp = Blueprint('my_blueprint', __name__)

@bp.cli.command('print-hello')
@with_appcontext
def print_hello():
"""Print Hello from the CLI."""
click.echo('Hello from the CLI!')

app.register_blueprint(bp)

if __name__ == '__main__':
app.run()

توضیح خط به خط کد

from flask import Flask, Blueprint
در این خط، کلاس‌های Flask و Blueprint رو از ماژول flask وارد می‌کنیم.

from flask.cli import with_appcontext
این خط ماژول with_appcontext رو از پکیج flask.cli وارد می‌کنه که به ما کمک می‌کنه تا کد CLI در زمینه اپلیکیشن Flask اجرا بشه.

import click
ماژول click که برای ساختن CLI سفارشی استفاده می‌شه رو وارد می‌کنیم.

app = Flask(__name__)
یک اپلیکیشن Flask جدید می‌سازیم.

bp = Blueprint('my_blueprint', __name__)
یک Blueprint جدید با نام my_blueprint ایجاد می‌کنیم.

@bp.cli.command('print-hello')
دکوراتور @bp.cli.command برای تعریف یک دستور CLI جدید به نام print-hello استفاده می‌شه.

@with_appcontext
این دکوراتور تضمین می‌کنه که دستور ما در زمینه اپلیکیشن Flask اجرا بشه.

def print_hello():
تابع print_hello تعریف می‌شه.

click.echo('Hello from the CLI!')
این خط پیام Hello from the CLI! رو در CLI به نمایش درمیاره.

app.register_blueprint(bp)
اتصال Blueprint به اپلیکیشن.

if __name__ == '__main__':
این خط بررسی می‌کنه که آیا فایل به عنوان اسکریپت اصلی اجرا می‌شه یا نه.

app.run()
اجرای اپلیکیشن Flask.

سوالات متداول

؟

چرا باید از Blueprint استفاده کنیم؟

؟

CLI در Flask چه کاربردی دارد؟

؟

آیا Blueprint فقط در Flask 3.0 وجود دارد؟