یادگیری فلاسک؛ اولین قدم برای ساخت برنامه Flask - بخش اول

مقدمه


در این مجموعه از یادگیری Flask میخوام نشون بدم که چطور با حداقل کُدنویسی در پایتون میتونید به راحتی از فریم‌ورک پایتون مثل فلاسک استفاده کنید. اگر تازه به دنیای پایتون قدم گذاشتی «تبریک میگم بهت» بهترین مکان را برای شروع برنامه‌نویسی را انتخاب کردی. به شما قول میدم بعد از پایان این مجموعه آموزشی چند قسمتی فلاسک درک کُلی از شروع برنامه‌نویسی و همچنین ساخت برنامه با فریم ورک Python یعنی فلاسک را داشته باشی.

Flask فریم ورکی کوچک و سبک اما خوش ساخت و قوی است - برای توسعه سرویس‌های تحت وب طراحی شده است و همچنین ابزارهای لازم برای ساخت برنامه‌ها در پایتون را فراهم میکند. فلاسک به توسعه دهندگان وب راحتی و انعطاف پذیری را میبخشد و ابزاریست که حتی توسعه‌ دهندگان جدید نیز خیلی سریع قادر به یادگیری آن میشوند.

هماطور که در ادامه خواهیم دید؛ برای شروع فلاسک نیازی به کُدهای پیچیده با ساختاری خاص ندارد. ساختار پروژه فلاسک ابتدا برای شروع پروژه فلاسک، دایرکتوری با نام flaskapp در آدرس دلخواه ایجاد میکنید. پیشنهاد من اینه که در این سری از آموزش فلاسک از نامگذاری‌هایی که انتخاب شده است استفاده کنید تا در ادامه با مشکل روبرو نشوید.

$ mkdir ~/flaskapp 
$ cd ~/flaskapp

خط اول از دستور فوق ابتدا دایرکتوری flaskapp را در آدرس مورد نظر ایجاد و با دستور دوم وارد آن میشویم. راه‌اندازی محیط مجازی پایتون (virtual environment) در این اینجا لازم است از محیط مجازی پایتون که به آن Python Virtual Environment میگویند استفاده کنیم.

$ python3 -m venv venv

پایتون مثل بسیاری از زبانهای برنامه نویسی دیگر دارای روش خاص خود برای دانلود و ذخیره سازی پکیج‌ها و ماژول‌های خود است. در اینجا ما از محیط مجازی پایتون استفاده کرده‌ایم.


محیط مجازی چیست؟


بطور خلاصه هدف اصلی محیط مجازی در پایتون ایزوله‌سازی پروژه‌های پایتون است - یعنی برای هر پروژه‌ای که ایجاد میکنید یه محیط جداگانه داشته باشید. این کار باعث میشه که هر پروژه صرف نظر از اینکه پروژه ی دیگر چه وابستگی‌هایی به پیکج‌های دیگر دارد، پکیج‌های خاص خود را داشته باشد - به این عمل محیط ایزوله میگویند.

برگردیم به پروژه خودمون. دستور فوقی که در ترمینال اجرا کردید، محیطی با نام venv در داخل دایرکتوری flaskapp ایجاد کردید. قبل از هر چیزی باید محیط مجازی خود را فعال کنیم:

$ source venv/bin/activate

اجرای این دستور محیط را فعال میکند و پیشوندی با نام (venv) در کنار خط فرمان ظاهر میشود. این یعنی محیط مجازی پایتون با موفقیت فعال شده است. بروزرسانی pip بهتر است قبل از اینکه پکیج Flask را در محیط مجازی پایتون با استفاده از pip دانلود و ذخیره کنیم، محیط مجازی‌ای که آن را ساخته‌ایم را بروزرسانی کنیم:

$ pip3 install --upgrade pip

 این اجرا خروجی زیر را به همراه خواهد داشت:

Collecting pip
  Using cached pip-21.0.1-py3-none-any.whl (1.5 MB)
Installing collected packages: pip
  Attempting uninstall: pip
    Found existing installation: pip 20.0.2
    Uninstalling pip-20.0.2:
      Successfully uninstalled pip-20.0.2
Successfully installed pip-21.0.1

برای غیر فعال‌ سازی محیط مجازی از دستور deactivate در ترمینال استفاده کنید

$ deactivate



نصب Flask


همانطور که میدونیم برای نصب پکیج‌های پایتون از pip استفاده می کنیم، در اینجا نیز برای اینکه پکیج فلاسک رو داخل محیط مجازی خود نصب کنیم از دستور زیر استفاده میکنیم.

$ pip3 install Flask

دستور فوق Flask را دانلود و نصب میکند. اگر بخواهید لیست پکیج‌هایی که در محیط مجازی پروژه شما نصب شده است را ببینید باید از pip list استفاده کنید.

$ pip3 list

 این اجرا خروجی زیر را به همراه خواهد داشت:

Package       Version
------------- -------
click         7.1.2
Flask         1.1.2
itsdangerous  1.1.0
Jinja2        2.11.3
MarkupSafe    1.1.1
pip           21.0.1
pkg-resources 0.0.0
setuptools    44.0.0
Werkzeug      1.0.1

پکیج‌های فوق تمام آن چیزیهایی است که برای شروع یک پروژه فلاسک لازم است.


ساخت یک برنامه Flask


یک برنامه فلاسک برای اینکه اجرا شود به حداقل یک فایل نیاز دارد. در اینجا فایلی با نام app.py در ریشه دایرکتوری flaskapp درست میکنیم. این فایل را با دستور زیر ایجاد کنید:

$ touch app.py

بعد از ساخت این فایل؛ اولین کاری که باید انجام بدید پکیج Flask رو به برنامه وارد کنید:

from flask import Flask


بعد از import کردن پکیج لازم است که یک کپی از تمام ابزارهای لازم در پکیج Flask در متغیر app قرار دهیم. این کار را با اختصاص دادن پارامتر __name__ به تابع Flask آغاز میکنیم.

from flask import Flask

app = Flask(__name__)


در اینجا __name__ یک متغیر کلیدی در پایتون است که نام ماژول پایتون فعلی را در خود نگهداری میکند که برای اختصاص دادن آدرس فایل در نمونه ایجاد شده از ماژول Flask استفاده میشود. فعلا لازم نیست نگران این چیزها باشید به مرور زمان درک خواهید کرد. فقط لازمه که همینطور ادامه بدید!


Route و View


در مرحله بعد لازم است که برای برنامه فلاسک خود یک مسیر که به route معروف است تعریف کنیم. این کار را با یک دکوراتور app.route@ انجام میدیم.

@app.route('/')
def index():
    return "Hello, World!"


اگر بخوام این سه خط را بطور ساده توضیح دهیم اینطور خواهد بود:

مسیرها یا همان Route با استفاده از app.route@ در برنامه تعریف مشود؛ این مسیرها میتوانند آدرس داشته باشند که در اینجا / تعیین شده. این یعنی اگر کاربر در مرورگر خود به آدرس http://example.com مراجعه کرد؛ خروجی مناسب برای آن آدرس یا URL را به کاربر برگرداند و در مروگر نمایش دهد - که در مثال بعد از مراجعه به آدرس / تابع index اجرا و بدنبال آن دستور return خروجی !Hello, World را نمایش میدهد.

توجه داشته باشید از نمونه‌ی app که قبلا ایجاد کردیم برای رسیدگی به ورودی‌ها و خروجی‌های کاربر و ارسال داده به کاربر استفاده میکنیم.


در آخر برنامه لازم است قبلا از اینکه برنامه فلاسک خودمون رو اجرا کنیم این دو خط مهم را به آن اضافه کنیم.

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


دانستن اینکه __name__ یک متغیر خاص در پایتون است و مفسر پایتون برای اینکه بفهمد کدام فایل، فایل برنامه اصلی است کفایت میکند.


اجرای برنامه Flask


حال وقت آن رسیده که برنامه فلاسکی که نوشتیم را اجرا کنیم. برای اجرای آن دو روش وجود دارد.

روش اول: برای این کار فایل app.py را در داخل دایرکتوری flaskapp با ترمینال اجرا کنید:

$ python3 app.py

این اجرا خروجی زیر را به همراه خواهد داشت:

 * Serving Flask app "app" (lazy loading)
 * Environment: production
   WARNING: This is a development server. Do not use it in a production deployment.
   Use a production WSGI server instead.
 * Debug mode: off
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)

حالا برنامه فلاسک اجرا شده و لازم است که به آدرس /http://127.0.0.1:5000 مراجعه کنید تا !Hello World را بر روی صفحه ببینید.


روش دوم: فقط کافیست یک جفت متغیر را در محیط shell خود تعریف کنیم:

$ export FLASK_APP=app.py
$ export FLASK_ENV=development

دستور اول متغیر FLASK_APP را با app.py مقداردهی و دستور دوم متغیر FLASK_ENV را با development مقداردهی میکند.

مقدار development باعث میشود برنامه در محیط تست یا development اجرا شود. از این محیط برای محیط‌های production یا واقعی استفاده نکنید.


حال برای اجرای برنامه در روش دوم دستور زیر را اجرا میکنیم:

$ flask run


این اجرا خروجی زیر را به همراه خواهد داشت:

 * Serving Flask app "app.py" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 242-761-214

همانطور که میبینید دیگر هیچ پیامی مبنی بر اینکه میحط برنامه در حالت تست یا development است را نمیبینیم.


حالا برنامه فلاسک اجرا شده و لازم است که به آدرس /http://127.0.0.1:5000 مراجعه کنید تا !Hello World را بر روی صفحه ببینید.


تا ایجا کافیه، «تبریک میگم». شما یاد گرفتید که اولین برنامه Flask را درست کنید.