Создаём веб-приложение с помощью Python
Создание веб-приложений с использованием Python представляет собой мощный и эффективный способ разработки функциональных и динамических веб-сайтов. В статье рассмотрим процесс создания веб-приложения с помощью Python и расскажем о ключевых аспектах этого процесса.
Подготовлено_выпускником —>

Получите востребованную профессию бесплатно. Обучение от 1 до 4 месяцев
Веб-разработка и Python
Python — универсальный и гибкий язык программирования, который идеально подходит для веб-разработки. Он обладает простым и понятным синтаксисом, а также широким набором инструментов и библиотек, которые делают его отличным выбором для создания веб-приложений.
Язык Python поддерживает различные веб-технологии и позволяет разработчикам создавать высококачественные и масштабируемые веб-сайты.
Python и фреймворки
Одним из ключевых преимуществ Python в веб-разработке является наличие множества фреймворков.
Фреймворки — набор инструментов и библиотек, которые упрощают разработку веб-приложений. Некоторые из наиболее популярных фреймворков Python: Django, Flask и Pyramid. Эти фреймворки предоставляют различные возможности, такие как маршрутизация URL, обработка запросов и шаблонизация, что позволяет разработчикам более эффективно создавать и поддерживать веб-приложения.
Установка библиотек
Установка Python выполняется с официального веб-сайта Python. Для установки библиотек и фреймворков Python рекомендуется использовать инструмент управления пакетами, такой как pip.
При помощи pip вы можете легко установить необходимые библиотеки и фреймворки, например, командой pip install flask для установки фреймворка Flask. Это позволит использовать все возможности фреймворка при разработке вашего веб-приложения.
Разработка веб-приложения
Процесс разработки веб-приложения с использованием Python включает несколько ключевых шагов. Сначала вы должны определить цели и требования вашего веб-приложения. Это поможет создать план разработки и структуру приложения. Затем вы можете приступить к проектированию базы данных, если приложение требует хранения данных.
После этого вы можете приступить к созданию компонентов веб-приложения, таких как модели данных, представления (views) и шаблоны (templates). Модели данных определяют структуру и отношения между данными, представления определяют логику обработки запросов и отображения данных, а шаблоны отвечают за визуальное представление данных на веб-странице.
Python-фреймворки, такие как Django, предлагают готовые инструменты и абстракции для обработки этих компонентов. Например, Django предоставляет ORM (Object-Relational Mapping), который позволяет вам взаимодействовать с базой данных с помощью объектов Python, а также систему маршрутизации URL, которая помогает определить, какой код будет обрабатывать каждый запрос.
Вам потребуется создать статические файлы, такие как CSS-стили и JavaScript, для обеспечения внешнего вида и функциональности вашего веб-приложения. Python позволяет легко интегрировать эти файлы в приложение и использовать их вместе с шаблонами для создания интерактивных и привлекательных пользовательских интерфейсов.

Запуск веб-приложения
Python предлагает различные варианты веб-серверов, включая встроенные серверы во многих фреймворках, таких как Flask или Django, а также сторонние серверы, такие как Gunicorn или uWSGI. Выбор веб-сервера зависит от ваших потребностей в производительности и масштабируемости.
После запуска веб-сервера ваше веб-приложение будет доступно по определенному адресу (например, localhost:8000). Вы можете открыть его веб-браузере и убедиться, что ваше веб-приложение работает корректно и отображает данные и функциональность, которые вы разработали. Вы также можете провести тестирование приложения, чтобы убедиться в его надежности и безопасности.
При разработке веб-приложения с использованием Python важно учитывать некоторые особенности. Веб-разработка требует знания HTML, CSS и JavaScript, поэтому рекомендуется ознакомиться с этими технологиями. Кроме того, важно следовать лучшим практикам безопасности при разработке веб-приложений, чтобы защитить данные пользователей и предотвратить возможные уязвимости.
Освоить разработку и начать карьеру в IT вы можете на бесплатном обучении в проекте «Содействие занятости».

Получите востребованную профессию бесплатно. Обучение от 1 до 4 месяцев
Как сделать интерфейс приложения python на HTML/CSS?
Есть ли фреймворки позволяющие сделать интерфейс десктопного приложения с использованием HTML/CSS?
Примерно по аналогии с Github Desktop.
- Вопрос задан более трёх лет назад
- 609 просмотров
Комментировать
Решения вопроса 2
Да есть библиотека которая сделана по аналогии, но для python https://github.com/ChrisKnott/Eel . Сам же кстати Github Desktop сделан на nodejs с фреймворком Electron
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать

Как быстро создать и развернуть веб-приложение на Python
В этой статье речь пойдет о разработке и развертывании простейшего дашборда по COVID-19 с помощью Streamlit. Streamlit — фреймворк, предназначенный для быстрого создания приложений по обработке данных путем развертывания организованного на Python пользовательского интерфейса. Streamlit не требует от разработчика предшествующего опыта (хотя практические навыки, конечно, не помешают).
Начнем с создания виртуальной среды для проекта. Затем напишем код на Python, который будет служить движком приложения. Потом воспользуемся библиотекой Streamlit, чтобы создать пользовательский интерфейс для кода на Python, и, наконец, развернем приложение. Надеюсь, это пошаговое руководство даст вам полное представление о процессе веб-разработки на Python.
Настройка виртуальной среды
Приступая к работе над проектом, первым делом надо установить виртуальную среду. Представьте себе виртуальную среду как место, пригодное для жизни вашего приложения и полностью отгороженное от остального мира.
Виртуальная среда не должна ничего знать ни о других программах, написанных вами, ни о библиотеках Python, которые вы установили. Это важно, потому что библиотеки Python, уже установленные на компьютере, могут создать проблемы для нового приложения.
Например, последняя версия пакета может сломать код из-за устаревания некоторых функций. Виртуальные среды решают эту проблему, позволяя разработчику учитывать версии используемых библиотек и отделять их от уже установленных на компьютере, что позволяет предотвратить перезапись и конфликт зависимостей.
Кроме того, виртуальная среда помогает поддерживать чистоту и организованность разработки. Приложение, вероятно, не будет использовать все библиотеки Python, установленные на компьютере. Если создавать его вне виртуальной среды, каждую библиотеку надо было бы включить в так называемый файл требований (подробнее об этом позже), необходимый для развертывания приложения. Это привело бы к значительному раздуванию кода.
Чтобы настроить виртуальную среду, откройте терминал или командную строку. Если работаете на Mac, перейдите к рабочему столу, набрав cd desktop , а для windows это будет cd C:\Users\YOUR PC USERNAME\Desktop . Затем введите mkdir streamlit_project && cd streamlit_project . В каталоге проекта создайте виртуальную среду с помощью python3 -m venv , за которым следует любое название. Обычно виртуальные среды называют .venv , но в данном примере будет virt_env . Вот как это выглядит:
python3 -m venv virt_env # Mac
python -m venv virt_env # Windows
Теперь можно активировать виртуальную среду и приступить к установке пакетов, необходимых для проекта. Чтобы активировать виртуальную среду, введите одну из следующих комбинаций в зависимости от типа операционной системы:
source virt_env/bin/activate # Mac
virt_env\Scripts\activate # WindowsПосле активации вы должны увидеть
(virt_env) .
Создание приложения
Теперь установим streamlit и другие пакеты, которые понадобятся в приложении на Python:
python3 -m pip install streamlit # Mac
python -m pip install streamlit # Windowspython3 -m pip install pandas # Mac
python -m pip install pandas # Windowspython3 -m pip install matplotlib # Mac
python -m pip install matplotlib # Windows
После установки этих пакетов скопируйте и вставьте код из Github-репозитория, сохранив его под именем covid_dashboard.py в каталоге виртуальной среды. Этот файл Python, содержащий приложение streamlit, выполняет две основные задачи.
1) Вычисляет четыре метрики.
2) Строит граф временных рядов новых случаев по штатам.
Объясню каждый раздел более подробно.
@st.cache(allow_output_mutation=True)def load_dataset(): try: df = pd.read_csv("https://raw.githubusercontent.com/nytimes/covid-19-data/master/us-counties.csv", sep=",") states = list(df['state'].unique()) except: Exception return df, states
Функция load_dataset() извлекает все данные по COVID-19 из аккаунта NYT на Github и создает список штатов США для фильтрации. Важно использовать st.cache над этой функцией, чтобы сохранить весь набор данных в памяти. В таком случае программе не придется перезагружать весь набор данных каждый раз при применении другого фильтра.
def pct_change(data, state, today):
.
Функция pct_change принимает три аргумента: набор данных по COVID-19, штат, выбранный нами в выпадающем списке и сегодняшнюю дату. Эта функция возвращает словарь с четырьмя метриками (новые случаи, изменение по случаям за 14 дней, новые смерти и изменение по смертям за 14 дней).
def chart_data(data, state):
.
def chart_data берет набор данных по COVID-19 и выбранный штат из выпадающего списка и возвращает временной ряд данных о новых случаях для выбранного штата.
Переходим к последней части кода (именно здесь вызываются функции, а данные возвращаются и отображаются в приложении). Вызываемая функция load_dataset() создает датафрейм и список штатов США. Затем создаем выпадающий список с помощью st.selectbox , добавляем к нему метку и список штатов. Добавляем логику, когда выпадающий список выбран.
Наконец, streamlit предлагает удобный способ добавления колонок и графов на веб-страницу, создавая более чистый общий формат. Главное преимущество — возможность создавать организованные и отзывчивые HTML-компоненты на чистом Python с минимальным количеством кода.
df, states = load_dataset()state_dropdown = st.selectbox('Select a State', states)if state_dropdown:data_dict = pct_change(df, state_dropdown, today)col1, col2, col3, col4 = st.columns(4)col1.markdown(f"New Cases: ")col2.markdown(f"""14-Day Change:
""", unsafe_allow_html=True)col3.markdown(f"New Deaths: ")col4.markdown(f"""% 14-Day Change:
""", unsafe_allow_html=True)chart_data = chart_data(df, state_dropdown)st.line_chart(chart_data)%
Развертывание приложения: начальные шаги
Пока созданное в виртуальной среде приложение streamlit живет только на локальном компьютере. Чтобы поделиться им со всем миром, нужно установить Git и Heroku.
Чтобы установить Git, откройте новое окно командной строки и на Mac введите:
git --version
Должно появиться всплывающее окно с дальнейшими инструкциями, позволяющее продолжить установку. Если вы пользователь Windows, используйте следующую ссылку для загрузки Git.
Чтобы установить Heroku на Mac, сначала установите Homebrew (если этого еще не сделали), а затем введите в новом окне терминала:
brew tap heroku/brew && brew install heroku
Если компьютер Mac работает на чипе M1, может произойти ошибка. Для решения проблемы воспользуйтесь страницей поддержки Apple.
Если вы пользователь Windows, используйте следующую ссылку для загрузки Heroku CLI.
После установки этих зависимостей можно опубликовать код на Github. Сначала создайте файл .gitignore , чтобы исключить файл виртуальной среды из репозитория Github, а затем измените его, введя virt_env/ (сохраните файл после внесения изменений):
(virt_env) > touch .gitignore # Mac
(virt_env) > echo.>.gitignore # Windows
Теперь инициализируйте Git в окне командной строки, где активна виртуальная среда, через git:
git init
git add -A
git commit -m "initial commit"
Войдите в аккаунт Github, создайте новый репозиторий, а затем выберите опцию Push an existing repository from the command line. Скопируйте и вставьте фрагмент кода из этой опции в командную строку, где запущена виртуальная среда.
Чтобы завершить этот этап, создайте файл требований с помощью pip freeze. Это сообщит веб-серверу, какие зависимости ему необходимы для успешного запуска приложения.
python -m pip freeze > requirements.txt
Создайте новый файл в каталоге виртуальной среды под названием setup.sh и сохраните в нем следующее:
mkdir -p ~/.streamlit/echo "\[server]\n\headless = true\n\port = $PORT\n\enableCORS = false\n\\n\" > ~/.streamlit/config.toml
Затем создайте Procfile (назовите его просто Procfile ) в каталоге виртуальной среды и сохраните в нем следующее:
web: sh setup.sh && streamlit run covid_dashboard.py
Теперь пришло время добавить файлы requirements.txt , Procfile и setup.sh в репозиторий Github:
git add -A
git commit -m "files for Heroku deployment"
git push -u origin main
Развертывание приложения на Heroku
Чтобы развернуть приложение в производственной среде, введите следующее в командной строке, где запущена виртуальная среда:
(virt_env) > heroku login
(virt_env) > heroku create
Это создаст случайное url-имя и развернет приложение, что займет 1–2 минуты. Вы должны увидеть в командной строке url, подобный приведенному здесь. Можете скопировать его в свой браузер.
Надеюсь, после прочтения этой статьи времена, когда код был заперт на вашем компьютере, уйдут в прошлое навсегда.
- Простое руководство по форматированию строк в Python с помощью f-строк
- 7 расширенных возможностей Python
- 10 ошибок, которые выдают новичков в Python
Как разрабатывать настольные приложения с помощью html, css, js, python?
Я хочу создавать свои настольные приложения, но есть некоторые условия:
1) Графический интерфейс я хочу писать на html, css, js.
2) Также, я хочу иметь возможность использовать такие прекрасные модули Python как openCV, pyautogui и многие другие модули.

Я пробовал использовать модуль eel, для общения js с Python, но в модуле слишком мало параметров для настройки самого окна приложения, например кнопки закрыть, свернуть, развернуть и сама шапка конечно же. (Всё выделяю на скрине).
Если я захочу запретить пользователю разворачивать приложение, или просто убрать шапку полностью, сделать я этого не смогу.
Подскажите пожалуйста, что мне нужно использовать и изучить для реализации моего желания?
- Вопрос задан более двух лет назад
- 468 просмотров
14 комментариев
Простой 14 комментариев
Может, я устарел, но ведь настольное приложение тем и отличается от веба, что требует меньших объёмов.
Для html+css нужен как минимум парсер, то есть обычно — браузер. Для интеграции — веб-сервер (или то, что его заменяет). Чтобы использовать подобное приложение, получается, пользователь дожен запустить сервер, а затем дождаться загрузки вашего приложения в браузере.
И это вместо того, чтобы использовать GUI-фреймворки, сразу для этого предназначенные (wxWidgets, Qt, и пр.). Воистину, вы хотите странного.

cicatrix, какой ещё нафиг сервер?
Я могу создать у себя на машине ФАЙЛ test.html и он запустится безо всякого сервера!
Developer, Он запустится в браузере (парсере html). JS на странице будет обрабатываться виртуальной машиной встроенного в браузер интерпретатора. По сути, это песочница. Если вы хотите использовать модули питона в программе, они должны будут работать на уровне приложений операционной системы. «Достучаться» до них из браузера вы сможете только отправкой веб-запросов (куда?) Вот тут-то вам и нужен будет веб-сервер, который будет принимать эти запросы из браузера и обрабатывать их соответствующим образом.
В вашей же «архитектуре» возможно исполнение только JS-скриптов. В принципе, это вполне рабочее решение, но дальше браузер с вменяемыми настройками безопасности вас не пропустит. Можно, конечно, попросить пользователя установить какой-нибудь плагин, но это уже извращения.
Igor Borisov, Я вот думаю, что должно быть это за дексктопная программа, чтобы я захотел вместе с ней всё это г на свой комп установить вдовесок 🙂
Igor Borisov, Ну как сказать. Вот, допустим, инструкции по установке:
1. Скачай Node.js (ссылка)
2. Скачай electron (ссылка)
3. Скачай питон (уточни версию!) (ссылка)
4. Скачай мою замечательную программу.
Вот так вот «в лоб» без установщика и скрипта. Впрочем, можно в один архив запихнуть. Но тогда ведь и обновлять придётся. я когда такое вижу, сразу уже ничего не хочется.

Всеволод Захаров @Xomek Автор вопроса
Igor Borisov, если это подготовка для разработки, то это фигня, пойдет.

Всеволод Захаров @Xomek Автор вопроса
Igor Borisov, вообще тема правда интересная, ведь у пайтона правда много возможностей, а в комбинации с электроном это просто магия), говорю конечно как новичек в этом деле.
Всеволод Захаров, Это всё замечательно крутится в вебе (на сервере). Поскольку среда на сервере контролируется владельцем сервиса, всё работает и пр.
Но как только вы лезете в десктоп — это значит иметь зоопарк операционных систем, конфигураций, версий браузеров, настроек безопасности, антивирусов, кривого софта и железа на машинах пользователей. Программа для десктопа в целом должна быть «вещью в себе» — самостоятельный исполняемый файл со всеми зависимостями в комплекте. Пользователь должен скачать один файл, запустить установщик и начать пользоваться программой.
И в этой связи заставлять его настраивать целую среду, в которой ваша программа будет работать = не иметь пользователей вообще. Программа может быть замечательной, но пользователи ленивы и, скорее, предпочтут вовсе не пользоваться вашей программой, чем тратить время и что-то дополнительно скачивать и тем более — настраивать.
Для десктопа есть C++, C#, Java. Язык программирования это прежде всего инструмент, а каждый инструмент хорош для тех задач, для которых он создан. Молотком забивают гвозди, а отвёрткой вкручивают шурупы. Молотком можно, конечно, забить саморез, но зачем?

Всеволод Захаров @Xomek Автор вопроса
cicatrix, дискорд, отличная программа на базе электрона, пользуюсь с удовольствием. Я бы приводил ещё примеры, но смысла в этом нету, вы правы на счёт саморезов, но видимо миллионы пользователей фигмы, Скайпа и ТД, не согласятся с вами.

Всеволод Захаров, Я вас, возможно, удивлю, но клиентские приложения для упомянутых вами сервисов (Discord, Skype) для десктопов являются исполняемыми файлами (Portable executable). Для windows они имеют расширение exe и скорее всего написаны на C++.
Они просто пользуются api своих веб-сервисов (которые могут быть реализованы на чём угодно), но сама программа скомпилирована в EXE. Собственно, ни для скайпа, ни для дискорда, ни для любого другого десктопного клиента мне ещё ни разу не приходилось устанавливать на машину Node.js и питон 🙂

Всеволод Захаров @Xomek Автор вопроса
cicatrix, хм, тогда вы считаете мой вариант не лучшим? Может посоветуете что нибудь? Я все таки не давно в этом, так что впитываю любую инфу и советы)
Всеволод Захаров, Вам зачем? Если вы просто хотите делать то, что вам нравится — творите в вебе.
Если вам, таки, впёрся именно десктоп — то рассмотрите изучение языков, которые для этого предназначены. Тут уже много адептов, топящих за своё, но рассмотрите C#.
Во-первых, разработка для десктопа с WPF, к примеру, использует XAML, который очень близок по духу с HTML+CSS.
C# — язык общего назначения, на нём можно писать вообще всё, что угодно (кроме, разве что, драйверов и операционных систем) и относительно прост в изучении. Так же C# является основным языком для платформы Unity, а с ней вы сможете пробовать себя уже и в разработке игр. Кроме того, с технологией ASP.Net сможете так же продолжить писать и веб-прилжоения/веб-сайты/веб-сервисы. С C# можно писать и под Windows, и под Linuх и под Android (про MacOS не в курсе, но, скорее всего, тоже можно). Ну и все ваши вкусности, которые вы видели на питоне, вполне реализуемы на С#.
Нативно C# разумеется делался под винду, соответственно, и по дизайну (XAML) приложения, написанные на нём, выглядят получше альтернатив.
С++ будет посложнее, думаю, сразу туда нырять в вашем случае не стоит.
Если по каким-то причинам C# не подойдёт, рассмотрите Java.

Всеволод Захаров @Xomek Автор вопроса
cicatrix, спасибо вам за подробные ответы, гляну на Шарп, жаль конечно потраченного времени на js, но как я понимаю подключить скрипты пайтон в веб будет нереально, ибо странички тогда могли бы навредить пользователю ..
Всеволод Захаров, JS всегда пригодится, если надумаете в веб-разработку. И, как раз, в вебе вы всегда сможете на стороне сервера вызывать питоновские скрипты, чтобы производить какие-то манипуляции, но повторяю — это будет происходить НА СЕРВЕРЕ.
В вебе у пользователя есть только одна программа — браузер. Он заходит на страничку и смотрит, как в окошко, на ваше приложение. Ему видно только то, что вы ему показываете в виде HTML/CSS — то есть он видит картинку, не более. Если используется JS, то сам браузер сможет «в песочнице» исполнить этот код, но доступа к ресурсам машины пользователя у него нет. Соответственно, из браузера вызвать скрипт на питоне, который исполнится на машине пользователя, нельзя.
При нажатии на кнопочку либо вы запускаете JS и пользуетесь при этом только теми данными, что имеется «в песочнице», при этом у вас никогда не будет доступа ни к памяти, ни к ОС, ни к процессам, ни к диску, ни к оборудованию, либо браузер попросту отправит на ваш сервер информацию о том, что кнопочка нажата, ну и перешлёт те данные, что пользователь в форму ввёл. И вот, получив это на сервере, вы уже можете запускать что угодно, хоть ядерные ракеты, но пользователь увидит лишь то, что вы пришлёте в ответ на POST запрос.
Решения вопроса 1

Всеволод Захаров @Xomek Автор вопроса
Программист любитель
Нашел интересное решение, такое как electron и python-shell, я получу окно настольного приложения и смогу настраивать его на много более глобально, а так же получу доступ к Пайтону.
Ответ написан более двух лет назад
Что я вам и сообщал в комментарии — Electron, это хромиум с доступом к Node.js (де-факто вашим сервером, который будет отрабатывать запросы от браузера). Итого, чтобы поставить ваше приложение на машину пользователя надо ему установить Electron (с довеском в виде Chromium и Node.js) + Python.
И всё это вместо того, чтобы дать ему один исполняемый в нативной среде файл.

Всеволод Захаров @Xomek Автор вопроса
cicatrix, я еще плаваю в терминах, так что сразу вас не понял.
Благодарю за помощь!) Радости полные . ))