آموزش شماره 5: الگوهای طراحی فلاسک و بهترین روش ها برای برنامه های کاربردی وب
آموزش شماره 6: آموزش Flask API با مثال
این آموزش مقدماتی Python Flask توضیح می دهد که Flask چیست، نصب Python، Virtualenv، Flask Hello World مثال با بخشی در مورد نمونه کد، اشکال زدایی و آزمایش:
توسعه وب سایت بیشتر یک هنر است تا یک مهارت این نیاز به صبر و پشتکار، همراه با پشتکار، شجاعت و فداکاری دارد تا آنچه را که برای موفقیت واقعی لازم است ایجاد کنید. این روزها، برای زبان آموزان ضروری است که هر چه زودتر به سرعت دست یابند.
ما این آموزش Python Flask را برای دانش آموزان ایجاد کرده ایم تا به سرعت بالا بروند و برنامه نویسی ساده و همچنین پیچیده وب را با استفاده از Python 3 پیاده سازی کنند. .
این آموزش Python Flask بیشتر شبیه یک آموزش مبتدی فلاسک است که شامل نصب Python، Virtualenv و سایر بسته های ضروری. در این سری از آموزش ها، Flask را به همراه سایر پلاگین های ضروری Flask نیز نصب خواهیم کرد. ما همچنین بخشی را در مورد اشکال زدایی کد، آزمایش، و یکپارچه سازی مداوم با استفاده از Git Actions گنجانده ایم.
فهرست آموزش های این سری Flask
آموزش شماره 1: Python Flask آموزش – معرفی Flask برای مبتدیان
آموزش شماره 2: قالب فلاسک، فرم، مشاهده و تغییر مسیر با مثالها
آموزش شماره 3: مدیریت پایگاه داده Flask – نحوه استفاده از Flask با پایگاه داده
آموزش شماره 4: برنامه Flask و طرح پروژه Flask با Blueprint &مراحل ذکر شده در پیش نیازها.
مرحله 1: پایتون را نصب کنید
بررسی کنید که آیا پایتون 3 را نصب کرده اید یا خیر. اگر نه، پس پایتون 3 را از اینجا دانلود کنید و طبق سیستم عامل خود نصب کنید.
مرحله 2: یک محیط مجازی پایتون ایجاد کنید
یک محیط مجازی با استفاده از دستور زیر.
python3 -m venv venv
از دستور زیر برای فعال سازی محیط مجازی پایتون استفاده کنید.
source venv/bin/activate
در زیر مثالی از فعال سازی و غیرفعال سازی محیط مجازی آورده ایم.
تمام دستورات بعدی در این آموزش باید در یک محیط مجازی فعال اجرا شوند. بسته چرخ را نصب کنید تا بتوانیم داخل محیط مجازی چرخ بسازیم.
pip install wheel
مرحله 3: دانلود و نصب فلاسک
ما باید مراحل دانلود فلاسک را انجام دهیم و با استفاده از مراحل زیر، Flask را نصب کنید.
اکنون Flask را نصب کنید.
pip install flask
بعضی از ما دوست داریم با آخرین تغییرات کد منبع کار کنیم. ما می توانیم از دستور زیر برای نصب با آخرین تغییرات در منابع Flask استفاده کنیم.
یک دایرکتوری موقت بسازید.
mkdir tmp
اکنون Flask را از مخزن Github نصب کنید. برای اینکه دستور زیر کار کند، باید به اینترنت متصل بمانید.
pip3 install -e [email protected]:pallets/flask.git#egg=flask
برای بررسی موفقیت آمیز نصب، به خروجی های کنسول نگاه کنید. اکنون بررسی کنید که آیا می توانیم به دستورات Flask دسترسی داشته باشیم.
flask --help
شما ممکن است استثناهایی در مورد عدم وجود فلاسک مشاهده کنید.کاربرد. با این حال، آنها را نادیده بگیرید زیرا ما هیچ برنامه Flask ایجاد نکرده ایم. برنامه ما نمونهای از Flask است که روی چارچوب وب Werkzeug و موتور قالببندی Jinja قرار دارد.
Werkzeug
Werkzeug یک جعبه ابزار WSGI است. WSGI تنها یک قرارداد فراخوانی برای سرورهای وب برای ارسال درخواست های وب به برنامه های کاربردی وب نوشته شده به زبان برنامه نویسی پایتون است.
Jinja
Templating یک روش است. مهارت های ضروری توسعه دهندگان وب Jinja یک موتور قالب با امکانات کامل و محبوب برای پایتون است. این یک زبان کاملا رسا است و مجموعه ای قوی از ابزارها را در اختیار نویسندگان قالب قرار می دهد.
مرحله 4: نصب MongoDB
مراحل زیر را برای نصب MongoDB دنبال کنید. ما مراحل نصب آن را در لینوکس مبتنی بر دبیان شرح داده ایم. اگر از سیستم عامل دیگری استفاده می کنید، به پیوند دسترسی پیدا کنید و طبق سیستم عامل مورد نظر نصب کنید.
gnupg را برای وارد کردن کلید GPG عمومی MongoDB نصب کنید.
sudo apt-get install gnupg
اکنون کلید را با استفاده از دستور زیر وارد کنید.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
فایل فهرست منابع را مطابق با توزیع لینوکس خود ایجاد کنید. ما لیستی از منابع را طبق دبیان اضافه کرده ایم.
echo "deb //repo.mongodb.org/apt/debian buster/mongodb-org/4.2 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.2.list
اجرای دستور به روز رسانی
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
اکنون MongoDB را با استفاده از دستور زیر نصب کنید.
sudo apt-get install -y mongodb-org
هنگامی که نصب با موفقیت انجام شد، MongoDB را با استفاده از دستور زیر راه اندازی کنید.
sudo systemctl start mongod
وضعیت MongoDB را با استفاده از دستور بررسی کنید.در زیر.
sudo systemctl status mongod
اکنون مطمئن شوید که mongod به طور خودکار در راه اندازی مجدد سیستم با صدور دستور زیر نشان داده شده شروع می شود.
sudo systemctl enable mongod
اکنون بررسی کنید که آیا می توانید با استفاده از mongo client به سرور MongoDB متصل شوید.
mongo
در پوسته mongo، از راهنما استفاده کنید و دستورات dbs را نشان دهید.
ایجاد یک برنامه Flask
از دستور زیر برای نصب flask-appbuilder و mongoengine استفاده کنید.
pip install flask-appbuilder pip install mongoengine pip install flask_mongoengine
یک برنامه skeleton با مقادیر نشان داده شده به عنوان نظرات در قطعه کد زیر ایجاد کنید.
flask fab create-app # Give the following values in the command line questionnaire # Application Name: flaskTutorialApp # EngineType : MongoEngine
خروجی مشابه آنچه در زیر ارائه شده است خواهیم دید.
Your new app name: exampleApp Your engine type, SQLAlchemy or MongoEngine (SQLAlchemy, MongoEngine) [SQLAlchemy]: MongoEngine Downloaded the skeleton app, good coding!
به طرحبندی پروژه و برنامه نگاهی بیندازید. ما خروجی فرمان درختی را در زیر نشان داده ایم.
بیایید نگاهی به فایل پیکربندی Flask بیندازیم. این یک پیکربندی پیش فرض است که در نتیجه آخرین فرمان ایجاد شده است. همانطور که در زیر نشان داده شده است، موضوع Cyborg را لغو نظر کنید.
# Theme configuration for Cybord=g # these themes are located on static/appbuilder/css/themes # We can create our own and easily use them by placing them on the same dir structure to override #APP_THEME = "bootstrap-theme.css" # default bootstrap #APP_THEME = "cerulean.css" # cerulean #APP_THEME = "amelia.css" # amelia theme #APP_THEME = "cosmo.css" # cosmo theme APP_THEME = "cyborg.css" # cyborg theme #APP_THEME = "flatly.css" # flatly theme
برای اجرای برنامه skeleton، از دستور زیر در ترمینال استفاده کنید.
flask run
Flask Hello World
برای ایجاد اولین برنامه خود در flaskTutorialApp، فایل views.py را در فهرست برنامه باز کنید و کد زیر را اضافه کنید. به دنبال عبارات import داده شده در فایل باشید. اگر قبلاً وجود ندارد، این عبارات را اضافه کنید.
from flask_appbuilder import BaseView, expose from app import appbuilder class HelloWorld(BaseView): """ This first view of the tutorial """ route_base = "/hello" @expose("/") def hello(self): return "Hello, World! from Software Testing Help" # at the end of the file appbuilder.add_view_no_menu(HelloWorld())
پس از افزودن کد منبع بالا، فایل را ذخیره کنید. به دایرکتوری ریشه پروژه بروید و از دستور زیر برای اجرای سرور توسعه Flask استفاده کنید.
flask run
اکنون برای دیدن خروجی در //localhost:5000/hello/ بروید.مرورگر.
اشکال زدایی
در حال حاضر، سرور توسعه در حالت Debug اجرا نمی شود. بدون حالت اشکال زدایی، یافتن خطاها در کد منبع برنامه Flask دشوار است.
حالت اشکال زدایی در Flask به موارد زیر منجر می شود:
- حالت اشکال زدایی، بارگذاری مجدد خودکار را فعال می کند. این بدان معناست که پس از ایجاد تغییرات در کد منبع برنامه، نیازی به راه اندازی مجدد سرور توسعه نیست.
- حالت اشکال زدایی اشکال زدایی پایتون را فعال می کند. ما می توانیم مقادیر متغیرها را در طول Exception بررسی کنیم.
- حالت Debug اشکال زدایی برنامه Flask را فعال می کند. ما میتوانیم مقادیر متغیرهای مختلف را در جلسات اشکالزدایی بررسی کنیم.
اگر سرور توسعه از قبل در حال اجرا است، متوقف شود. برای انجام همین کار می توانید از CTRL + C یا وقفه صفحه کلید استفاده کنید.
از کد زیر برای فعال کردن حالت اشکال زدایی استفاده کنید و سرور توسعه را به طور موقت اجرا کنید.
FLASK_ENV=development flask run
جستجو کنسول PIN Debugger را یادداشت کنید.
اکنون اجازه دهید نمای HelloWorld نوشته شده در بالا را با خطوط زیر از قطعه کد تغییر دهیم. توجه داشته باشید که ما یک استثنای سفارشی معرفی کردهایم.
@expose("/") def hello(self): raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
به //localhost:5000/hello/ بروید، و خواهید دید که برنامه یک استثنا ایجاد کرده است. مرورگر ردیابی پشته را مانند شکل زیر نمایش می دهد.
![](/wp-content/uploads/guides/iae5sr2a76-3.png)
علاوه بر این، به کنسولی که سرور توسعه در آن در حال اجرا است نگاه کنید. شما متوجه خواهید شد که این بار،تغییرات در views.py به طور خودکار شناسایی می شوند و سرور اشکال زدایی خود به خود راه اندازی مجدد می شود. اکنون نیازی نیست که به صورت دستی آن را راه اندازی مجدد کنیم.
کنسول مانند شکل زیر دارای خطوط خواهد بود. برای بعداً باید پین Debug را یادداشت کنیم.
* Detected change in '/work/sth/flaskTutorialApp/app/views.py', reloading 2020-06-02 14:59:49,354:INFO:werkzeug: * Detected change in '/work/sth/flaskTutorialApp/app/views.py', reloading * Restarting with stat 2020-06-02 14:59:49,592:INFO:werkzeug: * Restarting with stat * Debugger is active! * Debugger PIN: 150-849-897
اکنون ردیابی پشته را در مرورگر بررسی کنید و به خط آخر بروید. روی آن کلیک کنید تا نمای آن را گسترش دهید و روی نماد CLI کلیک کنید تا پوسته در حالت تعاملی باز شود.
![](/wp-content/uploads/guides/iae5sr2a76-4.png)
پس از باز کردن آن، خواهید دید که مرورگر یک درخواست برای Debug PIN نشان می دهد. پین Debug را بدهید و روی OK کلیک کنید.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
وقتی پس از دادن پین Debug ادامه دادیم، میتوانیم به پوسته تعاملی دسترسی پیدا کنیم.
ما از داخل مرورگر به پوسته دسترسی پیدا میکنیم و می تواند مقادیر متغیرها را بررسی کند تا علت استثنا را پیدا کند و خطا را به روشی بهتر مدیریت کند. لطفاً به یکی از نمونههای نشاندادهشده در تصویر زیر نگاه کنید.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
اکنون مانند تصویر زیر، کد را در view.py تغییر دهید. توجه داشته باشید که ما روی خطی که دارای Exception افزایش یافته بود نظر دادهایم.
@expose("/") def hello(self): # raise Exception("A custom exception to learn DEBUG Mode") return "Hello, World! from Software Testing Help"
آزمایش برنامه Flask
حالا اجازه دهید اولین آزمایش خود را برای برنامه Flask که در حال توسعه هستیم بنویسیم. ابتدا PyTest را نصب کنید. PyTest یک چارچوب آزمایشی است. این به ما کمک می کند کد بهتری بنویسیم.
علاوه بر این، فقط به این دلیل که می توانیم تست های واحد را در حین توسعه برنامه های خود بنویسیم، می توان از رویکرد TDD پیروی کرد. TDD مخفف Test-Driven Development است. در آموزش های بعدی ما ازدر این سری، ما همیشه ابتدا تست ها را می نویسیم و نماها یا مدل های خود را توسعه می دهیم.
PyTest را نصب کنید
pip install pytest
اکنون یک دایرکتوری به نام tests در دایرکتوری برنامه و در آن ایجاد کنید. فایلی به نام test_hello.py ایجاد کنید. بیایید اولین تست واحد خود را بنویسیم تا نمای خود را آزمایش کنیم.
قطعه کد زیر را کپی کرده و در test_hello.py قرار دهید.
#!/usr/bin/env python from app import appbuilder import pytest @pytest.fixture def client(): """ A pytest fixture for test client """ appbuilder.app.config["TESTING"] = True with appbuilder.app.test_client() as client: yield client def test_hello(client): """ A test method to test view hello """ resp = client.get("/hello", follow_redirects=True) assert 200 == resp.status_code
از دستور pytest زیر برای اجرا استفاده کنید تست ها PyTest به طور خودکار تست ها را جمع آوری می کند و نتایج را در خروجی استاندارد نمایش می دهد.
![](/wp-content/uploads/guides/iae5sr2a76-7.png)
ایجاد یک گردش کار GitHub
ما از Git Actions برای ایجاد یک گردش کار CI/CD برای برنامه نمونه خود استفاده می کنیم. مراحل زیر را برای پروژه خود دنبال کنید.
مرحله 1: به صفحه مخزن در GitHub بروید. روی Git Actions کلیک کنید.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
مرحله 2: در صفحه به پایین اسکرول کنید و یک الگوی گردش کار موجود برای یک بسته Python پیدا کنید.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
مرحله 3: گردش کار بسته Python را تنظیم کنید.
![](/wp-content/uploads/guides/iae5sr2a76-10.png)
مرحله 4: هنگامی که پیکربندی گردش کار python-package.yml باز شد، آن را بر اساس Yaml اضافی داده شده به روز کنید. مقادیر برچسب.
name: flaskTutorialApp jobs: build: runs-on: ubuntu-latest strategy: matrix: python-version: [3.7, 3.8] mongodb-version: [4.2] steps: - name: Start MongoDB uses: supercharge/[email protected] with: mongodb-version: ${{ matrix.mongodb-version }} # other values
ما می خواهیم برنامه Flask خود را بر روی آخرین توزیع لینوکس اوبونتو آزمایش کنیم. علاوه بر سیستمعامل، ما میخواهیم آزمایشهای خود را فقط با استفاده از Python 3.7 و Python 3.8 اجرا کنیم.
مرحله 5: python-package.yml را با مقادیر بهروزرسانی شده متعهد کنید.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
مرحله 6: commit در صفحه قبل ما را به GitActions می بردjobs.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
مرحله 7: [اختیاری]
در صفحه Github Jobs برای نمونه برنامه آموزشی، میتوانیم یک نشان و مکان ایجاد کنیم آن را در فایل README.md برای نمایش وضعیت ساخت.
اکنون، هر زمان که تغییرات به شاخه اصلی انجام شود، Git Workflow، همانطور که در python-package.yml نوشته شده است، دنبال می شود و در Git Actions اجرا می شود. .
نتیجه
در این آموزش، همه مفاهیم پایه از پیش نیازها تا تنظیم گردش کار CI/CD برای یک برنامه وب توسعه یافته با استفاده از Flask – چارچوب توسعه وب مبتنی بر پایتون را پوشش داده ایم.
این آموزش تمام مراحل لازم مانند نصب پایتون، دانلود و amp; نصب Flask، کار با Flask-Appbuilder، آزمایش با PyTest و غیره برای شروع توسعه وب با استفاده از Python. جامعه توسعه وب معمولاً Flask را با یکی دیگر از چارچوب های توسعه وب محبوب پایتون به نام جنگو مقایسه می کند.
ما این تفاوت ها را توضیح خواهیم داد و همچنین این چارچوب ها را در یکی از آموزش های این مجموعه مقایسه خواهیم کرد.