Существует много языков программирования, которые можно использовать для создания веб-страниц: HTML, HTML5, JavaScript, PHP и так далее. А Python? Очевидно, да, так как веб-сервер MicroWebSrv – в основном предназначен для платформ ESP32, которые работаю под управлением MicroPython, поскольку платы Pycom – поддерживают вставку Python кода внутрь файлов “HTML” с расширением .pyhtml.
Код можно найти на Github и состоит только из трех файлов:
- microWebSrv.py – Веб-сервер
- microWebSocket.py – Дополнительная поддержка WebSockets
- microWebTemplate.py – Дополнительный язык шаблонов для .pyhtml рендеринга страниц
Помимо файлов HTML / Python, веб-сервер может обрабатывать запросы GET, POST и так далее, встроенный полный REST API, обработчики маршрутизации, WebSockets и т.д…
Вот как выглядит смешанный HTML + Python файл .pyhtml:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
<html> <head> <title>TEST PYHTML</title> </head> <body> <h1>BEGIN</h1> {{ py }} def _testFunction(x) : return "IN TEST FUNCTION %s" % x {{ end }} <div style="background-color: black; color: white;"> {{ for toto in range(3) }} This is an HTML test...<br /> TOTO = {{ toto + 1 }} !<br /> {{ for toto2 in range(3) }} TOTO2 = {{ _testFunction(toto2) }} {{ end }} Ok good.<br /> {{ end }} </div> {{ _testFunction(100) }}<br /> <br /> {{ if 2+5 < 3 }} IN IF (1) {{ elif 10+15 != 25 }} IN ELIF (2) {{ elif 10+15 == 25 }} IN ELIF (3) {{ else }} IN ELSE (4) {{ end }} </body> </html> |
Можно использовать двойные фигурные скобки {{ and }} для вставки кода MicroPython, операторов if, циклов или включения.
Нет уверенности, что это имеет смысл для всех платформ, но например, если ваша плата ограничена ресурсами и уже запускает прошивку MicroPython и у нее уже есть интерпретатор Pythonit, и вы можете обойтись без дополнительной оперативной памяти и хранилища для интерпретатора JavaScript.
Выражаем свою благодарность источнику с которого взята и переведена статья, сайту cnx-software.com.
Оригинал статьи вы можете прочитать здесь.