Table of Contents
شروع کار با Flask
در این بخش با یک فریمورک سبک و محبوب برای توسعهٔ وب با پایتون به نام Flask آشنا میشوید و اولین برنامهٔ وب خود را با آن اجرا میکنید.
Flask چیست و چه ویژگیهایی دارد؟
Flask یک فریمورک وبِ:
- سبک (Lightweight): حداقل امکانات لازم را فراهم میکند و بقیه را خودتان در صورت نیاز اضافه میکنید.
- میکرو (Micro-framework): یعنی همه چیز را از قبل برای شما تعیین نکرده؛ شما آزادی زیادی دارید.
- مبتنی بر پایتون: کدهای وبسرور شما در پایتون نوشته میشود.
چند ویژگی مهم Flask:
- یادگیری ساده برای مبتدیان
- مناسب برای پروژههای کوچک تا متوسط
- مستندات خوب و مثالهای فراوان
- جامعهٔ کاربری فعال
در این فصل، فقط با بخشهای پایهای Flask آشنا میشوید تا بتوانید یک وبسرور ساده بسازید. جزئیات بیشتر مثل قالبها، فرمها و API ها در بخشهای بعدی همین فصل میآیند.
نصب Flask
برای استفاده از Flask ابتدا باید آن را نصب کنید. بهتر است این کار را در یک محیط مجازی (virtual environment) انجام دهید، اما جزئیات محیط مجازی را در اینجا باز نمیکنیم.
۱. مطمئن شوید pip روی سیستم شما کار میکند (در فصل کتابخانهها و نصب با pip توضیح داده میشود).
۲. در ترمینال یا خط فرمان بنویسید:
pip install flask
اگر از python -m pip استفاده میکنید:
python -m pip install flaskپس از نصب، میتوانید با دستور زیر نسخهٔ Flask را ببینید:
python -m flask --versionاگر خطایی نداشتید و نسخه نمایش داده شد، Flask آمادهٔ استفاده است.
ساخت اولین پروژهٔ Flask
برای کار با Flask معمولاً یک پوشهٔ پروژه میسازیم و داخل آن فایلهای پایتون و دیگر فایلهای مربوط به وبسایت را قرار میدهیم.
۱. یک پوشه جدید برای پروژه بسازید، مثلاً:
- در ویندوز:
C:\projects\my_flask_app - در macOS/Linux:
/home/user/my_flask_appیا هر مسیر دلخواه دیگر
۲. وارد آن پوشه شوید و یک فایل پایتون به نام app.py بسازید.
ساخت فایل (مثلاً با ویرایشگر متن یا VS Code) و ذخیره کردن آن را قبلاً تمرین کردهاید؛ در اینجا فقط روی کد تمرکز میکنیم.
سادهترین برنامهٔ Flask
در فایل app.py این کد را بنویسید:
from flask import Flask
app = Flask(__name__)
@app.route("/")
def home():
return "سلام دنیا از Flask!"
if __name__ == "__main__":
app.run()این یک وببرنامهٔ بسیار ساده است. در ادامه فقط اجزای مخصوص Flask را توضیح میدهیم:
from flask import Flask
کلاسFlaskرا از کتابخانهٔflaskوارد میکنیم تا بتوانیم یک برنامهٔ وب بسازیم.app = Flask(__name__)
یک شیء برنامهٔ Flask میسازیم. معمولاً نام آن راappمیگذاریم.
پارامتر__name__کمک میکند Flask بداند فایل اصلی برنامه کجاست.@app.route("/")
این یک دکوراتور است که به Flask میگوید وقتی کاربر به آدرس/(صفحهٔ اصلی سایت) مراجعه کرد، کدام تابع را اجرا کند.
فعلاً کافی است بدانید که"/"یعنی صفحهٔ اصلی.def home():
تابعی که وقتی کاربر به صفحهٔ اصلی سایت میرود اجرا میشود.return "سلام دنیا از Flask!"
نتیجهٔ تابع، همان متنی است که در مرورگر کاربر نمایش داده میشود.if __name__ == "__main__": app.run()
این قسمت برنامهٔ وبسرور را اجرا میکند تا بتوانید با مرورگر به آن وصل شوید.
اجرای برنامهٔ Flask
برای اجرای همین برنامه:
۱. ترمینال (یا خط فرمان) را باز کنید.
۲. به پوشهای که app.py در آن قرار دارد بروید، مثلاً:
cd مسیر_پروژه_شما۳. برنامه را اجرا کنید:
python app.pyاگر همه چیز درست باشد، باید در ترمینال چیزی شبیه این ببینید:
* Serving Flask app 'app'
* Running on http://127.0.0.1:5000حالا مرورگر را باز کنید و آدرس زیر را وارد کنید:
http://127.0.0.1:5000/
یاhttp://localhost:5000/
باید متن زیر را ببینید:
سلام دنیا از Flask!
برای متوقف کردن برنامه، به ترمینال برگردید و Ctrl + C را بزنید.
درک مسیرها (Routes) در Flask
مسیر یا Route تعیین میکند که وقتی کاربر یک آدرس خاص از سایت شما را باز میکند، چه کدی اجرا شود.
نمونهٔ صفحهٔ اصلی:
@app.route("/")
def home():
return "این صفحهٔ اصلی است."نمونهٔ صفحهٔ دربارهٔ ما:
@app.route("/about")
def about():
return "این صفحهٔ دربارهٔ ما است."در این مثال:
- رفتن به
http://localhost:5000/تابعhomeرا اجرا میکند. - رفتن به
http://localhost:5000/aboutتابعaboutرا اجرا میکند.
شما میتوانید چندین مسیر در یک فایل Flask داشته باشید.
نمایش HTML بهجای متن ساده
Flask میتواند مستقیماً HTML را هم برگرداند. در این مرحله، بدون ورود به بحث قالبها (Templates)، فقط یک نمونهی سادهی HTML برمیگردانیم:
@app.route("/")
def home():
return "<h1>خوش آمدید</h1><p>این اولین صفحهٔ وب شما با Flask است.</p>"
مرورگر این متن را مثل یک صفحهٔ HTML تفسیر میکند و تگهای <h1> و <p> را بهصورت تیتر و پاراگراف نمایش میدهد.
در بخش «مسیرها و قالبها (Templates)» یاد میگیرید که چطور HTML را در فایلهای جداگانه نگه دارید.
حالت اشکالزدایی (Debug Mode) در Flask
در زمان توسعه، مفید است که:
- وقتی فایلی را ذخیره میکنید، سرور خودکار ریاستارت شود.
- اگر خطایی رخ داد، در مرورگر پیام خطا و جزئیات بیشتری ببینید.
برای این کار میتوانید debug=True را به app.run اضافه کنید:
if __name__ == "__main__":
app.run(debug=True)
هشدار:
حالت debug=True فقط برای توسعه و روی کامپیوتر خودتان است. برای محیط واقعی (Production) استفاده از آن امن نیست، اما در این دوره روی مبانی و تمرینهای محلی تمرکز میکنیم.
متغیر در آدرس (Route Parameters) – مقدماتی
گاهی میخواهید بخشهایی از آدرس را بهصورت متغیر بگیرید. برای نمونه:
/user/ali/user/sara
میتوانید این کار را در Flask اینطور انجام دهید:
@app.route("/user/<name>")
def user_page(name):
return f"سلام {name}!"اکنون:
- رفتن به
http://localhost:5000/user/aliمتنسلام ali!را نشان میدهد. - رفتن به
http://localhost:5000/user/saraمتنسلام sara!را نشان میدهد.
اینجا:
<name>بخشی از آدرس است که بهعنوان متغیر به تابعuser_pageداده میشود.- مقدار آن به پارامتر
nameدر تابع منتقل میشود.
این امکان در بخشهای بعدی برای ساخت صفحات پویا و کار با فرمها بسیار مفید خواهد بود.
ساختار سادهٔ یک پروژهٔ Flask
برای پروژههای خیلی ساده، یک فایل app.py کافی است.
اما حتی از همین حالا میتوانید یک ساختار مرتبتر داشته باشید، مثلاً:
- پوشهٔ پروژه:
app.py- پوشهٔ
templates(برای HTML – در فصل بعد) - پوشهٔ
static(برای فایلهایی مثل CSS و تصویر – بعداً)
در این زیرعنوان فقط اشاره میکنیم که Flask ساختار مشخصی را پیشنهاد میدهد تا پروژهها مرتبتر شوند؛ در بخش «مسیرها و قالبها» و ادامهٔ فصل بیشتر با این ساختار کار خواهید کرد.
جمعبندی
در این بخش یاد گرفتید:
- Flask چیست و چه نوع فریمورکی است.
- چطور Flask را با
pipنصب کنید. - چگونه یک فایل
app.pyبسازید و یک وبسرور ساده را اجرا کنید. - مفهوم مسیرها (
@app.route) و اتصال آدرسهای وب به توابع پایتون. - نمایش متن ساده و HTML در مرورگر.
- استفاده از حالت اشکالزدایی (
debug=True). - تعریف مسیرهایی با بخش متغیر در آدرس مثل
/user/<name>.
در بخشهای بعدی این فصل، روی ساخت یک وبسرور ساده، کار با قالبها (Templates) و پردازش ورودی کاربر تمرکز میکنیم تا برنامههای وب کاربردیتری بسازید.