در نسخه جدید فریمورک 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.