Фреймворк Flask

Flask - это микро-фреймворк, который очень мало зависит от внешних библиотек. Это очень легкая структура, которая дает нам свободу делать все, что мы хотим.

В этой главе мы собираемся создать проект с использованием Python и фреймворка Flask.

Запуск и настройка Flask

Как и большинство широко используемых библиотек Python, пакет Flask можно установить из индекса пакетов Python (PPI). Давайте сначала создадим каталог (в этой главе мы создали каталог с именемflaskProject) затем создал виртуальную среду (и назвал ее flaskEnv), куда будут загружены все связанные с проектом зависимости (включая колбу). Вы также можете установить flask-sqlalchemy, чтобы ваше приложение flask имело простой способ взаимодействия с базой данных SQL.

После установки фляги ваш flaskEnv (наше имя виртуальной среды) покажет что-то вроде ниже:

Создание приложения с помощью Flask

Установив flask, мы можем создать простой "hello application in flask»С очень небольшим количеством строк кода, а именно:

Введите в терминал следующее -

$python flaskapp.py

И вы можете увидеть следующий результат -

Работает на http://127.0.0.1:5000/ или на localhost:5000

Ниже приводится объяснение того, что мы сделали в нашем примере кода -

  • Во-первых, мы импортируем библиотеку классов Flask. Экземпляр из этого класса - приложение WSGI.

  • Во-вторых, мы создаем экземпляр этого класса. Нашим первым аргументом является имя пакета приложения или модуля. Flask обязательно знает, где искать статические файлы, шаблоны и другие файлы.

  • Далее идет декоратор route (), который мы используем, чтобы узнать, какой URL-адрес должен запускать наш метод / функцию.

Создание URL-маршрутизации

URL-маршрутизация упрощает запоминание URL-адресов в вашем веб-приложении. Теперь мы создадим несколько URL-маршрутов -

/hello
/members
/members/name

Мы можем написать следующий код на основе указанного выше URL и сохранить его как app.py.

from flask import Flask, render_template

app = Flask(__name__)

@app.route('/')
def index():
   return "Index!"
	
@app.route('/Hello')
def hello():
   return "Hello, World!"
	
@app.route("/members")
def members():
   return "Members"
	
@app.route("/members/<name>/")
def getMember(name):
   return name
	
if __name__ == '__main__':
   app.run(debug=True)
При перезапуске приложения мы используем следующие строки кода, чтобы получить разные выходные данные по различным URL-адресам:

$ python app.py

Running on http://localhost:5000/

В нашем браузере мы получим следующий результат -

Мы можем попробовать другие URL-адреса в нашем браузере следующим образом:

Running on http://localhost:5000/hello, will give the following output −

Running on http://localhost:5000/members, will give −

Running on http://localhost:5000/members/TutorialsPoint/, will give you the following output −

Но обычно мы не хотим возвращать строку (как указано выше), мы возвращаем шаблоны. Для этого мы хотим использовать функцию «render_template»Из колбы и вернуть render_template с некоторыми данными. Итак, функция ниже выполнит нашу работу -

from flask import render_template
return render_template(‘home.html’)

Создадим шаблон папки и поместим в него файл home.html.

Далее мы поговорим о верстке. Вместо использования тегов html head и body для каждого отдельного шаблона мы разработаем макет, который будет включать теги head и body и обернуть текущие представления или текущий шаблон. Для этого мы должны создать один отдельный файл и назвать егоlayout.html. Здесь мы можем поместить наш обычный тег заголовка, тег тела и все другие необходимые теги.

Мы можем создать наш новый layout.html с помощью следующих строк кода:

<!DOCTYPE html>
<html>
   <head>
      <meta charset="utf-8">
      <title>MyFlaskApp</title>
      <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
   </head>
   <body>
      {% include 'includes/_navbar.html' %}
      <div class="container">
      {% block body %}
      {% endblock %}
      </div>
      <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js">
      </script>
   </body>
</html>

В приведенном выше коде мы указали заголовок MyFlaskAp, используем css cdn в заголовке и javascript в блоке тела, чтобы включить загрузку.

Теперь нам нужно создать панель навигации для каждой страницы. Для этого мы должны сначала создать подключаемую папку, а затем создать внутри нее файл _navbar.html. Теперь в _navbar.html мы должны использовать стандартный стартовый шаблон с getbootstrap.com. Недавно созданный файл _navbar.html будет следующим:

И включите этот файл _navbar.html в наш файл layout.html.

{% include 'includes/_navbar.html' %}

Поскольку у нас есть блок макета, мы можем расширить этот блок в нашем домашнем файле (home.html).

Наш файл home.html можно создать с помощью приведенного ниже кода -

{% extends 'layout.html' %}
{% block body %}
   <div class="jumbotron text-center">
      <h1>Welcome to FlaskApp</h1>
      <p>This application is built on Flask webframework!</p>
   </div>
{% endblock %}

Используя это, если мы попытаемся запустить наш файл flaskapp.py, тогда мы сможем увидеть следующий вывод в нашем браузере -

Теперь мы хотим активировать (в настоящее время вкладки не работают) наши aboutтаб. Создайте маршрут для вкладки about и создайте файл шаблона,about.html.

О маршруте вкладки в appflask.py будет, как показано ниже -

Файл about.html будет иметь следующее содержимое -

Итак, теперь о Доме и О нас позаботились. Для статей мы можем создать новый файл (data.py) в корневом каталоге, куда мы помещаем данные и вызываем их на нашей веб-странице.

data.py

def Articles():
   articles = [
      {
         'uid': 1,
         'title': 'Article_One',
         'body': 'Flask, being a microframework, often requires some repetitive step
            to get a third party library working. Because very often these steps could 
            be abstracted to support multiple projects the Flask Extension Registry 
            was created.',
         'Author': 'Rajesh Joshi',
         'Created-on': '07-09-2018'
      },
      {
         'uid': 2,
         'title': 'Article_Two',
         'body': "Flask, being a microframework, often requires some repetitive steps
            to get a third party library working. Because very often these steps could 
            be abstracted to support multiple projects the Flask Extension Registry 
            was created.",
         'Author': 'Rajesh J',
         'Created-on': '07-09-2018'
      },
      {
         'uid': 3,
         'title': 'Article_Three',
         'body': 'Flask, being a microframework, often requires some repetitive steps
            to get a third party library working. Because very often these steps could be
            abstracted to support multiple projects the Flask Extension Registry 
            was created.',
         'Author': 'Joshi Rajesh',
         'Created-on': '07-09-2018'
      }
   ]
   return articles

Ниже приведен код для articles.html, в котором будут отображаться заголовки статей для каждого uid.

{% extends 'layout.html' %}
{% block body %}
   <h1>Articles</h1>
   {% for article in articles %}
      <li class="list-group-item">
         <a href="article/{{article.uid}}"> {{article.title}}</a>
      </li>
   {% endfor %}
{% endblock %}

Подводя итог, можно сказать, что Flask - одна из самых популярных веб-фреймворков на Python из-за своей легкости. Хотя это микро, это расширяемая веб-среда на Python. Предоставляя необходимую функциональность, flask ускоряет разработку простых веб-приложений. Таким образом, Flask больше подходит для небольших и менее сложных приложений.