وقتی از فریمورک فلاک برای توسعه وب استفاده میکنید، مفاهیم مختلفی وجود دارند که باید با آنها آشنا شوید تا بتوانید بهترین استفاده را از این فریمورک کنید. یکی از این مفاهیم، شیء request_ctx
است. در واقع، در کدهای توسعه وب برای حفظ اطلاعات بین درخواستهای مختلف، به یک ساختار کمکی نیاز دارید که فلاک با استفاده از request_ctx
به شما این امکان را میدهد.
شیء request_ctx
در فلاک به شما این امکان را میدهد که به طور موقت اطلاعات مربوط به درخواست فعلی کاربران را نگه دارید. این اطلاعات میتواند شامل اطلاعاتی مانند مسیر URL، پارامترهای درخواست، کوکیها، و حتی اطلاعات جلسات (sessions) باشد که همه در یک مکان جمعآوری شدهاند و میتوانند به سادگی مدیریت شوند.
زمانی که دیباگ میکنید یا نیاز دارید وضعیت خاصی از یک درخواست را ردیابی کنید، request_ctx
برای مدیریت دقیق و ساده آن بسیار کمککننده است. با این حال، باید حواسمان باشد که این شیء تنها برای یک درخواست خاص معتبر است و پس از پایان اجرای درخواست، اطلاعات آن پاک میشود.
استفاده صحیح از request_ctx
میتواند عمق و وضوح بیشتری به توسعهی برنامههای وبی شما بدهد. این توانایی را دارید که به کمک آن دادههای کاربردی مختلف را در سطح اپلیکیشن برای هر درخواست مدیریت کنید و نتیجهگیری مناسبی از عملکرد کاربران در اپلیکیشن خود داشته باشید.
برای درک بهتر این مفهوم، به یک نمونه کد میپردازیم که در آن از request_ctx
استفاده شده است. این نمونه نشان میدهد که چگونه میتوانید درخواستها را مدیریت کرده و دادههای مربوط به کاربر را ذخیره و استفاده کنید.
from flask import Flask, request
app = Flask(__name__)
@app.route('/')
def index():
with app.request_context(environ):
print(request.method)
return 'Hello, Flask!'
if __name__ == '__main__':
app.run()
توضیح کد:
from flask import Flask, request
: این خط، کتابخانههای ضروری برای استفاده از فلاک و request
را وارد میکند.
app = Flask(__name__)
: یک شیء از اپلیکیشن فِلَک ایجاد میکند.
@app.route('/'):
: یک روت به مسیر اصلی وبسایت تعریف میکند.
def index():
: یک تابع تعریف میکند که با درخواست به مسیر اصلی اجرا میشود.
with app.request_context(environ):
: استفاده از زمینه درخواست (context) برای اجرای عناصر مختلف یا مدیریت متغیرهای مربوط به درخواست فعلی.
print(request.method)
: نوع روش HTTP ارسالی را چاپ میکند (مانند: GET، POST).
return 'Hello, Flask!'
: رشتهای ساده به کاربر بازگشت میدهد.
if __name__ == '__main__':
: اطمینان از اجرای اسکریپت فقط در جذابترین سناریو (هنگامی که مستقیم اجرا میشود نه به عنوان یک ماژول).
app.run()
: سرور داخلی فلاک را برای گوش دادن به درخواستها و اجرای اپلیکیشن راهاندازی میکند.