Уеб разработка с Flask в Python
Урок 7: Уеб разработка с Flask в Python
В този урок ще се запознаем със Flask – микро уеб рамка за Python, която позволява бързо и лесно създаване на уеб приложения. Ще научим как да създадем базово уеб приложение с Flask, как да работим с шаблони и как да изграждаме API.
Въведение в Flask
Flask е лека и гъвкава уеб рамка за Python, която е идеална за създаване на малки и средни уеб приложения. Тя предлага минималистичен подход към разработката на уеб приложения, като по този начин е лесна за изучаване и употреба.
Инсталиране на Flask
За да започнем, трябва да инсталираме Flask. Можем да го направим чрез pip:
pip install Flask
Създаване на базово уеб приложение
Основен файл на приложението
Създайте файл с име app.py
и добавете следния код:
from flask import Flask
# Създаване на инстанция на Flask
app = Flask(__name__)
# Дефиниране на маршрути и функции за тях
@app.route('/')
def index():
return 'Welcome to my Flask App!'
@app.route('/about')
def about():
return 'This is an about page.'
# Стартиране на приложението
if __name__ == '__main__':
app.run(debug=True)
Обяснение
Flask
е импортиран от библиотекатаflask
.app = Flask(__name__)
създава инстанция на Flask приложение.@app.route('/')
и@app.route('/about')
са декоратори, които асоциират URL маршрутите с функции.- Всяка функция, маркирана с декоратора
@app.route()
, се изпълнява при достъпване на съответния URL път. app.run(debug=True)
стартира уеб приложението в режим на отладка.
Шаблони и рендериране
Flask позволява използването на HTML шаблони за по-добро организиране на уеб приложението.
Създаване на папка за шаблони
Създайте нова папка templates
в директорията на проекта. В нея ще съхранявате HTML шаблоните на вашето приложение.
Използване на шаблони
Променете файлът app.py
, за да включите използването на шаблони:
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html', title='Home', content='Welcome to my Flask App!')
@app.route('/about')
def about():
return render_template('about.html', title='About')
if __name__ == '__main__':
app.run(debug=True)
Пример на шаблон index.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ title }}</title>
</head>
<body>
<h1>{{ content }}</h1>
</body>
</html>
Пример на шаблон about.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{{ title }}</title>
</head>
<body>
<h1>About Page</h1>
<p>This is an about page for my Flask App.</p>
</body>
</html>
Изграждане на API с Flask
Flask позволява лесно създаване на API чрез връзките между маршрути и функции.
Пример за API
from flask import Flask, jsonify
app = Flask(__name__)
# Пример за данни
books = [
{'title': 'Python Programming', 'author': 'Guido van Rossum'},
{'title': 'Flask Essentials', 'author': 'O'Reilly Media'}
]
@app.route('/api/books', methods=['GET'])
def get_books():
return jsonify(books)
if __name__ == '__main__':
app.run(debug=True)
Обяснение
jsonify()
конвертира Python обекти в JSON формат.- Методът
get_books()
връща списък от книги в JSON формат при достъпване на URL път/api/books
.
Решения за стартиране на Flask приложение, което продължава да работи след затваряне на терминала:
Когато стартирате Flask приложение в терминала и след това затворите терминала или излезете от сесията, приложението спира да работи, защото то е свързано с текущата сесия на терминала. Когато тази сесия приключи, всички свързани с нея процеси, включително Flask приложението, също спират.
1. Използване на nohup
:
Можете да използвате командата nohup
, за да стартирате Flask приложението и да го отделите от терминалната сесия. Това ще позволи на приложението да продължи да работи дори след като затворите терминала.
nohup python3 app.py &
nohup
(no hang up): Приложението ще продължи да работи след затваряне на терминала.&
: Това ще стартира приложението на заден план, така че да можете да продължите да използвате терминала за други задачи.
2. Използване на screen
:
Можете да използвате screen
, за да стартирате Flask приложението в нова сесия, която продължава да работи след затваряне на терминала.
- Инсталирайте
screen
, ако още не е инсталиран:
sudo apt-get install screen
2. Стартирайте нова screen
сесия:
screen
3. Стартирайте Flask приложението:
python3 app.py
4. За да се отделите от сесията, без да я прекъсвате, натиснете Ctrl + A
, последвано от D
.
5. Можете да се върнете в сесията по-късно с командата:
screen -r
Настройка на Flask с Gunicorn
Flask по подразбиране използва вградения си уеб сървър, който не е предназначен за използване в производствени среди поддържа само една връзка. За да може вашето Flask приложение да обслужва множество връзки и да бъде по-устойчиво в производствени условия, трябва да го използвате заедно с по-стабилен уеб сървър и/или WSGI сървър като Gunicorn или uWSGI.
Стъпки за настройка на Flask с Gunicorn
Gunicorn е WSGI сървър, който е подходящ за производствени среди и може да обработва множество връзки едновременно.
1. Инсталиране на Gunicorn
Първо, инсталирайте Gunicorn с помощта на pip:
pip3 install gunicorn
2. Стартиране на Flask приложението с Gunicorn
След като инсталирате Gunicorn, можете да стартирате вашето Flask приложение с него:
gunicorn -w 4 -b 0.0.0.0:8000 app:app
-w 4
: Задава броя на работните процеси (workers). В този случай използваме 4 работни процеси. Броят на работниците зависи от броя на ядрата на вашия процесор. Общо правило е да използвате 2-4 работници на ядро.
-b 0.0.0.0:8000
: Свързва приложението на всички IP адреси на порт 8000
.app:app
: Това казва на Gunicorn да зареди обекта app
от модула app.py
.
Заключение
В този урок научихме как да създадем базово уеб приложение с Flask, как да работим с HTML шаблони и как да изградим прост API. Flask предоставя множество възможности за разширяване на функционалността и създаване на различни типове уеб приложения. Практикувайте редовно и експериментирайте с различни маршрути и шаблони, за да затвърдите наученото.
Благодарим ви за прочитането на статията! Ако намерихте информацията за полезна, можете да дарите посредством бутоните по-долу:
Donate ☕️ Дарете с PayPalDonate 💳 Дарете с Revolut