فل Framework Flask یک فریمورک محبوب در زبان برنامهنویسی Python است که به ما این امکان را میدهد که وبسایتها و APIها را به آسانی بسازیم. در نسخه ۳.۰ این فریمورک، تغییرات و بهبودهایی صورت گرفته که یکی از آنها افزودن ویژگیهای جدید به ماژول flask.g است. این ماژول به ما این امکان را میدهد که به اطلاعات گلوبال و متغیرهای جلسهها دسترسی پیدا کنیم.
در واقع، flask.g یک شیغ (object) گلوبال برای هر درخواست HTTP است. این بدین معنی است که شما میتوانید اطلاعات خاصی را در طول پردازش درخواست ذخیره کنید و از آنها در نقاط مختلف برنامه استفاده کنید. این ویژگی بسیار مفید است چون به شما کمک میکند اطلاعاتی را که نیاز دارید، در قالبی مرتب و سازماندهیشده در دسترس داشته باشید.
به طور مثال، اگر شما بخواهید یک شیٔ کاربری را در طول اجرای یک درخواست حفظ و نگهداری کنید، با استفاده از flask.g میتوانید این کار را به راحتی انجام دهید. تنها کاری که باید بکنید این است که شیٔ کاربر را در flask.g ذخیره کنید و سپس در هر تابع یا کلاسی که نیاز به آن دارید، به آن دسترسی پیدا کنید.
اما نکتهای که باید به آن توجه کنیم این است که flask.g فقط در طول عمر یک درخواست HTTP معتبر است. بدین معنا که اگر شما درخواستی ارسال کنید و پاسخ بگیرید، پس از آن دیگر دسترسی به اطلاعات ذخیره شده در flask.g نخواهید داشت. بنابراین برای حفظ اطلاعات ماندگارتر باید از روشهای دیگری مانند پایگاه داده استفاده کنید.
مثال کد
from flask import Flask, g
app = Flask(__name__)
@app.before_request
def before_request():
g.user = "کاربر فعلی"
@app.route("/")
def index():
return f"سلام، {g.user}!"
if __name__ == '__main__':
app.run()
توضیح کد
کد:
from flask import Flask, g
توضیح: این خط ماژولهای Flask و g را وارد میکند.
کد:
app = Flask(__name__)
توضیح: در این خط، یک شیٔ جدید از Flask ایجاد میکنیم که نام برنامه را میگیرد.
کد:
@app.before_request
توضیح: با این دکوراتور، تابع before_request قبل از هر درخواست HTTP اجرا میشود.
کد:
g.user = "کاربر فعلی"
توضیح: این خط متغیر کاربر فعلی را به شیٔ g نسبت میدهد.
کد:
@app.route("/")
توضیح: با این خط مشخص میکنیم که این تابع باید وقتی آدرس ریشه وبسایت باز میشود، اجرا شود.
کد:
return f"سلام، {g.user}!"
توضیح: در اینجا یک پیام شامل نام کاربر فعلی بازگشت میدهیم.
کد:
if __name__ == '__main__':
توضیح: این شرط به ما این امکان را میدهد که برنامه را اجرا کنیم فقط اگر این فایل به عنوان برنامه اصلی اجرا شود.
کد:
app.run()
توضیح: با این خط برنامه فلک را راهاندازی میکنیم و به آن اجازه میدهیم در حال اجرا باقی بماند.