სახელმძღვანელო #5: Flask დიზაინის ნიმუშები და საუკეთესო პრაქტიკა ვებ აპლიკაციებისთვის
სახელმძღვანელო #6: Flask API გაკვეთილი მაგალითით
ეს შესავალი Python Flask გაკვეთილი განმარტავს რა არის Flask, Python-ის, Virtualenv, Flask Hello World-ის ინსტალაციის მაგალითი განყოფილებით კოდის მაგალითებზე, გამართვაზე და ტესტირებაზე:
ვებგვერდის განვითარება არის უფრო ხელოვნებაა, ვიდრე უნარი. ის მოითხოვს მოთმინებას და შრომისმოყვარეობას, დაჟინებას, გამბედაობასა და თავდადებას, რათა შეიქმნას ის, რაც აუცილებელია რეალური წარმატებისთვის. ამ დღეებში აუცილებელია, რომ მოსწავლეებმა მიაღწიონ სიჩქარეს რაც შეიძლება მალე.
ჩვენ შევქმენით ეს Python Flask გაკვეთილი, რათა მოსწავლეებმა აიმაღლონ სიჩქარე და განახორციელონ მარტივი და რთული ვებ პროგრამირება Python 3-ის გამოყენებით. .
ეს Python Flask გაკვეთილი უფრო ჰგავს კოლბის დამწყებთათვის, რომელიც მოიცავს Python, Virtualenv და სხვა აუცილებელი პაკეტების ინსტალაცია. ამ გაკვეთილების სერიაში ჩვენ ასევე დავაინსტალირებთ Flask-ს სხვა აუცილებელ Flask დანამატებთან ერთად. ჩვენ ასევე შევიტანეთ განყოფილება კოდის გამართვის, ტესტირებისა და უწყვეტი ინტეგრაციის შესახებ Git მოქმედებების გამოყენებით.
გაკვეთილების სია ამ კოლბის სერიის
სამეურვეო პროგრამა #1: Python Flask სახელმძღვანელო – შესავალი Flask დამწყებთათვის
გაკვეთილი #2: Flask შაბლონი, ფორმა, ნახვა და გადამისამართება მაგალითებით
სამეურვეო #3: Flask Database Handling – როგორ გამოვიყენოთ Flask მონაცემთა ბაზაში
გაკვეთილი #4: Flask App and Flask Project Layout With Blueprint &ნახსენები ნაბიჯები წინაპირობებში.
ნაბიჯი 1: დააინსტალირეთ Python
შეამოწმეთ დააინსტალირეთ თუ არა Python 3. თუ არა, მაშინ გადმოწერეთ Python 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 აპლიკაცია. ჩვენი აპი არის Flask-ის მაგალითი, რომელიც არის შეფუთვა Werkzeug ვებ ჩარჩოსა და Jinja შაბლონის ძრავზე.
Werkzeug
Werkzeug არის WSGI ხელსაწყოების ნაკრები. WSGI არის მხოლოდ გამოძახების კონვენცია ვებ სერვერებისთვის ვებ მოთხოვნების გადამისამართებისთვის Python პროგრამირების ენაზე დაწერილ ვებ აპლიკაციებზე.
Jinja
თარგი არის ვებ დეველოპერების აუცილებელი უნარ-ჩვევები. Jinja არის სრულად გამორჩეული და პოპულარული შაბლონის ძრავა პითონისთვის. ის საკმაოდ გამომხატველი ენაა და თარგის ავტორებს უზრუნველყოფს ხელსაწყოების მძლავრ კომპლექტს.
ნაბიჯი 4: დააინსტალირეთ MongoDB
მიჰყევით ქვემოთ მოცემულ ნაბიჯებს MongoDB-ის ინსტალაციისთვის. ჩვენ ჩამოვთვალეთ მისი ინსტალაციის ნაბიჯები Debian-ზე დაფუძნებულ Linux-ში. თუ სხვა ოპერაციულ სისტემას იყენებთ, მაშინ შედით ბმულზე და დააინსტალირეთ დაგეგმილი ოპერაციული სისტემის მიხედვით.
დააინსტალირეთ gnupg MongoDB საჯარო GPG გასაღების იმპორტისთვის.
sudo apt-get install gnupg
ახლა გასაღების იმპორტი ქვემოთ ბრძანების გამოყენებით.
wget -qO - //www.mongodb.org/static/pgp/server-4.2.asc | sudo apt-key add -
შექმენით წყაროების სიის ფაილი თქვენი Linux დისტრიბუციის მიხედვით. ჩვენ დავამატეთ წყაროების სია Debian-ის მიხედვით.
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
გაუშვით განახლების ბრძანება
sudo apt-get update
ახლა დააინსტალირეთ MongoDB ქვემოთ მოცემული ბრძანების გამოყენებით.
sudo apt-get install -y mongodb-org
როგორც ინსტალაცია წარმატებულია, დაიწყეთ MongoDB ქვემოთ მოცემული ბრძანების გამოყენებით.
sudo systemctl start mongod
შეამოწმეთ MongoDB-ის სტატუსი ბრძანების გამოყენებითქვემოთ.
sudo systemctl status mongod
ახლა დარწმუნდით, რომ mongod ავტომატურად დაიწყება სისტემის გადატვირთვისას ქვემოთ ნაჩვენები ბრძანების გაცემით.
sudo systemctl enable mongod
ახლა შეამოწმეთ თუ შეგიძლიათ დაუკავშირდით MongoDB სერვერს mongo კლიენტის გამოყენებით.
mongo
მონგოს გარსში, სცადეთ დახმარების გამოყენება და აჩვენეთ dbs ბრძანებები.
შექმენით Flask App
გამოიყენეთ ქვემოთ მოცემული ბრძანება 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
ჩონჩხის აპის გასაშვებად გამოიყენეთ ქვემოთ მოცემული ბრძანება ტერმინალზე.
flask run
Flask Hello World
თქვენი პირველი პროგრამის შესაქმნელად flaskTutorialApp-ში, გახსენით ფაილი views.py აპის დირექტორიაში და დაამატეთ შემდეგი კოდი. მოძებნეთ ფაილში მოცემული იმპორტის განცხადებები. დაამატეთ ეს განცხადებები, თუ უკვე არ არის.
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())
შეინახეთ ფაილი ზემოთ მოყვანილი კოდის დამატების შემდეგ. გადადით პროექტის root დირექტორიაში და გამოიყენეთ ქვემოთ მოცემული ბრძანება Flask-ის განვითარების სერვერის გასაშვებად.
flask run
ახლა გადადით //localhost:5000/hello/ გამოსავლის სანახავადბრაუზერი.
გამართვა
ამჟამად, განვითარების სერვერი არ მუშაობს გამართვის რეჟიმში. გამართვის რეჟიმის გარეშე, ძნელია შეცდომების პოვნა Flask აპლიკაციის საწყის კოდში.
გამართვის რეჟიმი Flask-ში იწვევს შემდეგს:
- გამართვის რეჟიმი ააქტიურებს ავტომატურ გადატვირთვას. ეს ნიშნავს, რომ ჩვენ არ გვჭირდება განვითარების სერვერის გადატვირთვა აპლიკაციის საწყის კოდში ცვლილებების შეტანის შემდეგ.
- გამართვის რეჟიმი ააქტიურებს პითონის გამართვას. ჩვენ შეგვიძლია შევამოწმოთ ცვლადების მნიშვნელობები გამონაკლისის დროს.
- გამართვის რეჟიმი საშუალებას აძლევს Flask აპლიკაციის გამართვას. ჩვენ შეგვიძლია შევამოწმოთ სხვადასხვა ცვლადის მნიშვნელობები გამართვის სესიებში.
შეაჩერეთ განვითარების სერვერი, თუ ის უკვე მუშაობს. ამის გასაკეთებლად შეგიძლიათ გამოიყენოთ CTRL + C ან კლავიატურის შეფერხება.
გამოიყენეთ შემდეგი კოდი გამართვის რეჟიმის ჩასართავად და განვითარების სერვერის დროებით გაშვება.
FLASK_ENV=development flask run
ძებნა Debugger PIN-ის კონსოლი და ჩაინიშნეთ იგი.
ახლა მოდით შევცვალოთ ზემოთ დაწერილი 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-ში ავტომატურად გამოვლინდება და გამართვის სერვერი თავისთავად გადაიტვირთება. ახლა ჩვენ არ გვჭირდება მისი ხელით გადატვირთვა.
კონსოლს ექნება ხაზები, როგორც ეს ნაჩვენებია ქვემოთ. ჩვენ გვჭირდება აღვნიშნოთ გამართვის PIN-ი მოგვიანებით.
* 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)
როგორც მას გახსნით, ნახავთ, რომ ბრაუზერი აჩვენებს გამართვის PIN-ის მოთხოვნას. მიეცით გამართვის PIN და დააწკაპუნეთ OK-ზე.
![](/wp-content/uploads/guides/iae5sr2a76-5.png)
როგორც კი გავაგრძელებთ გამართვის PIN-ის მიცემის შემდეგ, ჩვენ შეგვიძლია წვდომა ინტერაქტიულ გარსზე.
ჩვენ შევდივართ გარსზე ბრაუზერის შიგნიდან და შეუძლია შეამოწმოს ცვლადების მნიშვნელობები გამონაკლისის მიზეზის მოსაძებნად და შეცდომის უკეთესად დამუშავებისთვის. გთხოვთ, გადახედოთ ქვემოთ მოცემულ სურათზე ნაჩვენები ერთ-ერთ მაგალითს.
![](/wp-content/uploads/guides/iae5sr2a76-6.png)
ახლა შეცვალეთ კოდი view.py-ში, როგორც ეს ნაჩვენებია ქვემოთ. გაითვალისწინეთ, რომ ჩვენ გავაკეთეთ კომენტარი იმ ხაზზე, რომელსაც ჰქონდა გამონაკლისი.
@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 მოქმედებებს CI/CD სამუშაო ნაკადის შესაქმნელად ჩვენი ნიმუშის აპლიკაციისთვის. მიჰყევით ქვემოთ მოცემულ ნაბიჯებს თქვენი პროექტისთვის.
ნაბიჯი 1: გადადით საცავის გვერდზე GitHub-ზე. დააწკაპუნეთ Git Actions-ზე.
![](/wp-content/uploads/guides/iae5sr2a76-8.png)
ნაბიჯი 2: გადადით გვერდზე ქვემოთ და იპოვეთ არსებული სამუშაო ნაკადის შაბლონი Python პაკეტისთვის.
![](/wp-content/uploads/guides/iae5sr2a76-9.png)
ნაბიჯი 3: დააყენეთ Python პაკეტის Workflow.
![](/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 აპლიკაცია Ubuntu Linux-ის უახლეს დისტრიბუციაზე. OS-ის გარდა, ჩვენ გვინდა ჩვენი ტესტების გაშვება მხოლოდ Python 3.7-ისა და Python 3.8-ის გამოყენებით.
ნაბიჯი 5: ჩააბარეთ python-package.yml განახლებული მნიშვნელობებით.
![](/wp-content/uploads/guides/iae5sr2a76-11.png)
ნაბიჯი 6: წინა გვერდზე დაკომპლექტება მიგვიყვანს GitActions-შივაკანსიები.
![](/wp-content/uploads/guides/iae5sr2a76-12.png)
ნაბიჯი 7: [არასავალდებულო]
Github სამუშაოების გვერდზე სამეურვეო აპლიკაციის ნიმუში, ჩვენ შეგვიძლია შევქმნათ ბეჯი და ადგილი ის README.md ფაილში build-ის სტატუსის საჩვენებლად.
ახლა, როდესაც ცვლილებები განხორციელდება მთავარ ფილიალში, Git Workflow, როგორც წერია python-package.yml-ში, მიჰყვება და გაშვებული იქნება Git Actions-ზე. .
დასკვნა
ამ სახელმძღვანელოში, ჩვენ განვიხილეთ ყველა ძირითადი კონცეფცია, დაწყებული წინაპირობებიდან დაწყებული CI/CD სამუშაო ნაკადის დაყენებამდე ვებ აპლიკაციისთვის, რომელიც შემუშავებულია Flask – Python-ზე დაფუძნებული ვებ განვითარების ჩარჩოს გამოყენებით.
ეს სახელმძღვანელო მოიცავს ყველა საჭირო ნაბიჯს, როგორიცაა Python-ის ინსტალაცია, ჩამოტვირთვა და amp; Flask-ის ინსტალაცია, Flask-Appbuilder-თან მუშაობა, PyTest-ის ტესტირება და ა.შ., რათა დაიწყოთ ვებ განვითარების პროგრამა Python-ის გამოყენებით. ვებ დეველოპერების საზოგადოება ჩვეულებრივ ადარებს Flask-ს სხვა პოპულარულ Python ვებ-განვითარების ჩარჩოს სახელად Django.
ჩვენ ავხსნით ამ განსხვავებებს და ასევე შევადარებთ ამ ჩარჩოებს ამ სერიის ერთ-ერთ სახელმძღვანელოში.