MIKE DO IT
MIKE DO IT
  • Видео 104
  • Просмотров 107 578
Как разместить Flask-приложение на сервере Ubuntu с Nginx и SSL #19
Привет всем! 🖐️
В этом видео я хочу поделиться с вами процессом развертывания веб-приложения на Flask на сервере Ubuntu. Мы начнем с самых основ, рассмотрим, как правильно настроить наш сервер, и пошагово перейдем к интеграции с Nginx и установке SSL-сертификата для безопасности вашего приложения.
🔍 Таймкоды:
00:00 - 🚀 Стартуем! Начало нашего путешествия
02:22 - 🌐 Подготовка: создание виртуального сервера на хостинге
05:01 - 🔐 Безопасное подключение: вход на сервер через SSH
06:28 - 🖥️ Первые шаги: начало работы на сервере
14:45 - 📦 Переносим код: клонирование проекта на сервер
23:16 - 🧠 Глубокое погружение: что такое WSGI?
27:36 - 🚀 Запускаем наше приложение с помощью gunicorn
32:10 - 🌐 Nginx: наш...
Просмотров: 3 508

Видео

My English Coach on Flask View + PostgreSQL + SQLite / Deploy Heroku #2
Просмотров 3632 года назад
🚀 Добро пожаловать во вторую часть увлекательного проекта "My English Coach"! 🚀 В этой серии уроков мы продолжим разработку нашего веб-приложения на Flask, с использованием PostgreSQL, SQLite, и развертывания на Heroku. А именно: Углубленное изучение Flask-Migrate для эффективных миграций базы данных. Реализацию страниц 404 и 500 для лучшего опыта пользователя. Добавление и настройку фавиконки ...
My English Coach on Flask View + PostgreSQL + SQLite / Deploy Heroku #1
Просмотров 2702 года назад
🚀 Добро пожаловать на первый урок нашего увлекательного проекта "My English Coach"! 🚀 В этой серии уроков мы создадим собственное веб-приложение с использованием Flask, PostgreSQL и SQLite. Мы также научимся развертывать наше приложение на платформе Heroku. 🔗 Git repo: github.com/MikesoWeb/My-English-Coach-with-Flask-View 🌟 Наши ключевые моменты в этом уроке: Мы начнем с представления приложени...
Изучаем Flask Views / приложение на Flask / # 2
Просмотров 3052 года назад
На этот раз мы сосредотачиваемся на ещё большем количестве ключевых аспектов: Создадим классы конфигурации для нашего приложения, чтобы настроить его по своему вкусу. Разработаем пользовательские View классы для выполнения CRUD операций - это ключевой момент в создании веб-приложений. Разберемся, как работают View и MethodView, и как данные передаются через as_view в конструктор. Глубоко погруз...
Изучаем Flask Views / приложение на Flask / # 1
Просмотров 1,3 тыс.2 года назад
В этом уроке мы погрузимся в мир Flask и научимся создавать классы конфигурации для нашего приложения. Мы также рассмотрим создание пользовательских View классов для выполнения операций CRUD. Узнаем, как работают View и MethodView, и как передаются данные через as_view в конструктор. Поговорим о работе с собственными стилями для flash плашек и реализации собственной страницы 404. - Создадим кла...
Создаем веб-приложение ToDo на FastAPI + Semantic UI / Менеджер задач на Python
Просмотров 15 тыс.2 года назад
🚀 Добро пожаловать в увлекательный мир разработки веб-приложений с Python! 🚀 В этом ролике мы создадим простой и эффективный менеджер задач ToDo, используя мощный веб-фреймворк FastAPI. Для улучшения визуального опыта пользователей мы будем использовать стильный фреймворк Semantic UI. Наши ключевые моменты в этом ролике: Создание ToDo менеджера с помощью FastAPI для быстрого и надежного разрабо...
Создаем веб-приложение ToDo на Django + Semantic UI / Менеджер задач на Python
Просмотров 17 тыс.2 года назад
🚀 Добро пожаловать в мир разработки веб-приложений с помощью Django! 🚀 В этом увлекательном ролике мы создадим простой, но мощный менеджер задач ToDo, используя популярный веб-фреймворк Django. Для стильного и интуитивно понятного пользовательского интерфейса мы воспользуемся фреймворком Semantic UI. Ключевые моменты в этом ролике: - Создание менеджера задач ToDo с использованием мощных возможн...
Создаем веб-приложение ToDo на Flask + Semantic UI / Менеджер задач на Python
Просмотров 4,2 тыс.2 года назад
🚀 Добро пожаловать в мир разработки веб-приложений с использованием Flask! 🚀 В этом увлекательном ролике мы создадим простой, но функциональный менеджер задач ToDo, используя легкий и гибкий веб-фреймворк Flask. Для создания стильного пользовательского интерфейса мы воспользуемся фреймворком Semantic UI. Наши ключевые моменты в этом ролике: Создание ToDo менеджера с использованием Flask для быс...
Основы работы с Git ветками в проекте Flask | Управление версиями для Python-разработчиков
Просмотров 2252 года назад
🚀 Добро пожаловать в мир Git и веб-разработки на Flask! 🚀 В этом увлекательном ролике мы исследуем основы работы с ветками Git, используя приложение на веб-фреймворке Flask с языком программирования Python. Ваш набор базовых команд для управления ветками Git: git init - Создаем репозиторий Git. git branch - Просматриваем локальные ветки. git branch имя_ветки или git checkout -b имя_ветки - Созд...
Flask-bootstrap - изучаем внутренности модуля/ создаем простое приложение на flask
Просмотров 2 тыс.2 года назад
Изучаем модуль и создаем простое приложение с логином на flask Старый модуль pythonhosted.org/Flask-Bootstrap/ Новый модуль bootstrap-flask.readthedocs.io/en/stable/basic/ Официальное заявление: Этот проект не может одновременно работать с Flask-Bootstrap. Если вы уже установили Flask-Bootstrap в той же среде Python, вам необходимо удалить его, а затем переустановить этот проект: $ pip uninstal...
Flask-Admin - работа с изображениями / вывод контента в views/ локализация приложения # 2
Просмотров 1,7 тыс.2 года назад
Автор библиотеки рассказывает о своем творении ruclips.net/video/aV4ZRkRiXYc/видео.html Официальная дока flask-admin flask-admin.readthedocs.io/en/latest/ Статья на Хабре habr.com/ru/post/148765/ Bootstrap themes bootswatch.com/3/ Git-repo github.com/MikesoWeb/flask-admin-lessons 01:00 Установка и настройка Flask Babel • Модуль Flask Babel устанавливается с помощью pip. • После обновления стран...
Flask-Admin - Создаем каркас проекта / админка на flask и пользовательские ModelView # 1
Просмотров 2,8 тыс.2 года назад
В этом ролике научимся создавать админку на flask , создавать пользовательские View и начинаем изучать функционал админки. Автор библиотеки рассказывает о своем творении ruclips.net/video/aV4ZRkRiXYc/видео.html Официальная дока flask-admin flask-admin.readthedocs.io/en/latest/ Статья на Хабре habr.com/ru/post/148765/ Bootstrap themes bootswatch.com/3/ Git-repo github.com/MikesoWeb/flask-admin-l...
Flask-Admin - что умеет на примере работы с ORM SQLAlchemy / смотрим официальную доку # 0
Просмотров 1,1 тыс.2 года назад
Вступление о библиотеке flask-admin Автор библиотеки рассказывает о своем творении ruclips.net/video/aV4ZRkRiXYc/видео.html Официальная дока flask-admin flask-admin.readthedocs.io/en/latest/ Статья на Хабре habr.com/ru/post/148765/ Bootstrap themes bootswatch.com/3/ Git-repo github.com/MikesoWeb/flask-admin-lessons 🔗 Связь с автором: 🌐 Официальный сайт: my-py.ru 💬 VK: Группа VK python_fo...
Деплой блога на Flask на сервере: Поиск и исправление ошибок #18
Просмотров 7773 года назад
В этом ролике мы завершаем наш курс по созданию блога на веб-фреймворке Flask. Мы рассмотрим процесс деплоя нашего блога на сервере, а также произведем долгий поиск и исправление двух ошибок, которые возникли в процессе разработки. Первая ошибка связана с неправильной работой slug-поля, а вторая с отсутствием slug-значения у одного из постов. Этот ролик также дает нам возможность изучить работу...
Создание административного раздела на блоге с Flask-Admin # 17
Просмотров 8983 года назад
В этом ролике мы добавим административный раздел нашему блогу, используя модуль Flask-Admin. Мы создадим роли "admin" и "user" для пользователей блога и расскажем, как можно переопределить шаблоны в нашем Flask-приложении для административных целей. 🔗 Связь с автором: 🌐 Официальный сайт: my-py.ru 💬 VK: Группа VK python_for_me ✈️ Telegram: Канал Telegram t.me/mikedoitchannel 👾 GitHub: Про...
Человекочитаемые URL для постов в блоге на Flask с помощью python-slugify #16
Просмотров 2363 года назад
Человекочитаемые URL для постов в блоге на Flask с помощью python-slugify #16
Flask Admin /создание интерфейса администратора поверх существующих моделей данных
Просмотров 9 тыс.3 года назад
Flask Admin /создание интерфейса администратора поверх существующих моделей данных
Наполняем блог фейковыми данными с помощью модуля mimesis в Flask
Просмотров 3733 года назад
Наполняем блог фейковыми данными с помощью модуля mimesis в Flask
Массово обрабатываем изображения на Python / Создаем декоратор подсчета времени работы функций
Просмотров 1363 года назад
Массово обрабатываем изображения на Python / Создаем декоратор подсчета времени работы функций
Блог на Flask: Реализация рубрик и тегов в постах пользователей # 15
Просмотров 2893 года назад
Блог на Flask: Реализация рубрик и тегов в постах пользователей # 15
Flask-приложение / relationship SQLAlchemy Many-To-Many/ работа с моделями и url_for routes
Просмотров 1,6 тыс.3 года назад
Flask-приложение / relationship SQLAlchemy Many-To-Many/ работа с моделями и url_for routes
Блог на Flask: Автоматизируем добавление пользователей в базу блога
Просмотров 2293 года назад
Блог на Flask: Автоматизируем добавление пользователей в базу блога
Блог на Flask: Создаем поиск на блоге с помощью модуля Flask-MSearch # 14
Просмотров 5043 года назад
Блог на Flask: Создаем поиск на блоге с помощью модуля Flask-MSearch # 14
Работа с моделями User, Post, Comment в flask shell / методы flush и rollback
Просмотров 3073 года назад
Работа с моделями User, Post, Comment в flask shell / методы flush и rollback
Работа в flask shell / bcrypt, User, random_avatar, save_picture / методы SQLAlchemy
Просмотров 2393 года назад
Работа в flask shell / bcrypt, User, random_avatar, save_picture / методы SQLAlchemy
Блог на flask / создание, обновление и удаление комментариев в постах пользователей # 13
Просмотров 6163 года назад
Блог на flask / создание, обновление и удаление комментариев в постах пользователей # 13
Блог на Flask / пользователь онлайн и блок информации о постах пользователей #12
Просмотров 1863 года назад
Блог на Flask / пользователь онлайн и блок информации о постах пользователей #12
Блог на Flask / Обрабатываем Ошибки - errorhandler и Сбрасываем Пароль на Почту # 11
Просмотров 4053 года назад
Блог на Flask / Обрабатываем Ошибки - errorhandler и Сбрасываем Пароль на Почту # 11
Что такое Docker? / Создаем свои контейнеры, запускаем и пушим на DockerHub #2
Просмотров 1503 года назад
Что такое Docker? / Создаем свои контейнеры, запускаем и пушим на DockerHub #2
Что такое Docker? Docker images & containers / Создание Dockerfile для блога на flask #1
Просмотров 2143 года назад
Что такое Docker? Docker images & containers / Создание Dockerfile для блога на flask #1

Комментарии

  • @___freedom___
    @___freedom___ 3 месяца назад

    спасибо, очень помог

  • @satisfyingoddlyvideo2600
    @satisfyingoddlyvideo2600 5 месяцев назад

    Как создать еще один проект в джанго у меня не получается пишут нет файла джанго-админ

    • @PythonDevelopment
      @PythonDevelopment 4 месяца назад

      Нарушена структура проекта. python manage.py startapp имя_приложения INSTALLED_APPS = [ # другие приложения 'имя_приложения', ]

  • @ВасилийЖданов-б7р
    @ВасилийЖданов-б7р 5 месяцев назад

    Расскажи про сокеты. Кто за отлайкайте!

    • @PythonDevelopment
      @PythonDevelopment 5 месяцев назад

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

  • @ВасилийЖданов-б7р
    @ВасилийЖданов-б7р 5 месяцев назад

    Лучшее видео, лучший по фласку! Из добавления кнопка вставить shift + insert тк вначале часто тупка с этим Расскажи как БД привязать в виртуальном сервере

    • @PythonDevelopment
      @PythonDevelopment 5 месяцев назад

      Ваш отзыв как бальзам на душу. Вопрос в конкретной DB? Готовую базу? 1) Если база уже создана то в роликах я много уделял внимание подключению различные способов подключения DB 2) Если создать свою базу и подключить ее то там есть ньюансы, а конкретно установить, создать базу данных и пользователя, разрешить удаленные подключения и открыть порт для запросов Добавляем базу в контекст приложения app = Flask(__name__) app.config['SQLALCHEMY_DATABASE_URI'] = 'postgresql://myuser:mypassword@your_server_ip/mydatabase' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False Создаем объект DB db = SQLAlchemy(app) и уже инициализируем, например так db.create_all() Вообще, рекомендую просто бегло просмотреть ролики, так подцепится нужная информация, а уж если зацепит изучить ее в контексте вопроса. Роликов много, рекомендую посмотреть все мои по Flask Спасибо большое, будут вопросы, пиши.

  • @leot3650
    @leot3650 6 месяцев назад

    Нельзя под рутом это все делать :)

  • @ВасилийЖданов-б7р
    @ВасилийЖданов-б7р 6 месяцев назад

    молодец лучшее видео по фласку

    • @PythonDevelopment
      @PythonDevelopment 6 месяцев назад

      Спасибо большое, делал как для себя так и для вас )

  • @AlexVatov
    @AlexVatov 7 месяцев назад

    Спасибочки :3

  • @konstantinsteblev9559
    @konstantinsteblev9559 7 месяцев назад

    Добрый, день! Спасибо вам за ролики, очень помогает писать свое первое приложение на Фласк. Есть вопрос- если у меня в модели в поле есть атрибут nullable=False, стоит ли в роутах админки дублировать о необходимости заполнения того же поля? через form_args = { 'name': dict(label='Name', validators=[DataRequired()]), } Так и так работает.

    • @PythonDevelopment
      @PythonDevelopment 7 месяцев назад

      Добрый день! Рад слышать, что ролики оказались полезны для вас! Что касается вашего вопроса, то использование атрибута nullable=False в модели гарантирует, что база данных не примет запись без значения в этом поле. Это хорошая практика для обеспечения целостности данных на уровне базы данных. В то же время, добавление валидатора DataRequired() в форму на стороне приложения позволяет отлавливать ошибки до того, как они достигнут базы данных. Это может улучшить пользовательский опыт, так как позволяет предоставить более понятные сообщения об ошибках и избежать ненужных запросов к базе данных, если данные не проходят валидацию. Таким образом, хотя технически это может показаться дублированием, на самом деле это два разных уровня валидации, и каждый из них служит своей цели. Валидация на стороне приложения обеспечивает лучший интерфейс и защиту от некорректного ввода данных пользователем, а валидация на стороне базы данных гарантирует целостность данных на более глубоком уровне. Так что да, стоит дублировать валидацию в роутах админки, чтобы обеспечить наилучший опыт для пользователя и надежность работы приложения.

    • @konstantinsteblev9559
      @konstantinsteblev9559 7 месяцев назад

      @@PythonDevelopment спасибо за ответ! Было бы здорово прояснить еще один вопрос: у вас в примерах используется модель User с полем image_user, для загрузки изображений в админке. Там вы используете стандартный метод form_extra_fields = { 'image_user': ImageUploadField(...)}. Тут все понятно, все здорово. У меня же есть модель Project с полем images = db.relationship('ProjectImage', back_populates='project', lazy=True, cascade='all, delete-orphan') и, соответственно модель ProjectImage с полями id, image_path(для сохранения ссылок на загруженные изображения), project_id(ForeignKey на project.id). Т.е. здесь связь один ко многим, загрузка нескольких изображений в папку и запись ссылки в бд. Но здесь стандартные методы flask_admin не работают для сохранения изображений для этих моделей. Как я понял из документации flask_admin.contrib.sqla я могу использовать inline_models для переопределения модели для определенного поля (в моем случае- это поле images переопределяется на image_path из ProjectImage ). Но и в этом случае, загрузка изображений не работает. Я правильно понял, что в таком случае надо писать кастомную форму и логику сохранения изображений и экземпляров моделей в функции def on_model_change(self, form, model, is_created) ? Речь про кастомное вью для админки, для модели Project.

    • @PythonDevelopment
      @PythonDevelopment 7 месяцев назад

      @@konstantinsteblev9559 Да, ваше понимание верно. В случае, когда у вас есть связь один ко многим между моделями Project и ProjectImage и вам нужно загрузить несколько изображений, стандартные инструменты flask_admin могут не подойти для выполнения этой задачи, так как они обычно предназначены для работы с одиночными файлами. Использование inline_models в flask_admin позволяет вам работать с связанными моделями прямо в интерфейсе администратора, но это не всегда может обеспечить необходимую функциональность для загрузки файлов. В вашем случае, действительно, может потребоваться создание кастомной формы и логики сохранения изображений. Вам нужно будет переопределить метод on_model_change в вашем кастомном вью для админки, чтобы обработать логику загрузки изображений и создания соответствующих экземпляров ProjectImage с сохранением ссылок на загруженные файлы. Примерный код может выглядеть так: from flask_admin.contrib.sqla import ModelView from flask_admin.form.upload import ImageUploadField from werkzeug.utils import secure_filename import os class ProjectView(ModelView): form_extra_fields = { 'image_upload': ImageUploadField('Image') } def on_model_change(self, form, model, is_created): if form.image_upload.data: # Пример загрузки файла и сохранения ссылки на изображение filename = secure_filename(form.image_upload.data.filename) form.image_upload.data.save(os.path.join('путь/до/папки', filename)) new_image = ProjectImage(image_path=filename, project=model) db.session.add(new_image) return super(ProjectView, self).on_model_change(form, model, is_created) Не забудьте также обработать удаление изображений, если они больше не нужны, чтобы избежать накопления неиспользуемых файлов на сервере. Это лишь пример, и вам, возможно, потребуется адаптировать его под вашу конкретную ситуацию, учитывая пути сохранения файлов, обработку ошибок и другие аспекты работы с файлами в вашем приложении.

    • @konstantinsteblev9559
      @konstantinsteblev9559 7 месяцев назад

      @@PythonDevelopment , супер! Спасибо!

    • @konstantinsteblev9559
      @konstantinsteblev9559 7 месяцев назад

      @@PythonDevelopment Супер, спасибо!

  • @TheTonyMan
    @TheTonyMan 8 месяцев назад

    В html шаблонах Django используется свой шаблонизатор и это точно не Jinja как во Flask. Можно проверить в списке установленных через pip list и убедится что Jinja там нет.

    • @PythonDevelopment
      @PythonDevelopment 7 месяцев назад

      Точно. Спасибо за комментарий

  • @rkozom
    @rkozom 8 месяцев назад

    Спасибо! Очень хороший пример готового проекта!

  • @moon5964
    @moon5964 8 месяцев назад

    Больше спасибо за ролик

    • @PythonDevelopment
      @PythonDevelopment 8 месяцев назад

      Ваша благодарность, моя награда) Спасибо

  • @moon5964
    @moon5964 8 месяцев назад

    очень полезный ролик, как то я сам не додумался что можно просто через цикл увидеть содержание базового конфига

    • @PythonDevelopment
      @PythonDevelopment 8 месяцев назад

      Очень рад что вам пригодилось) И вам спасибо за просмотр и отзыв. Я просто не смотрел чужие ролики, а всё ковырял сам до самых низов и ставил множества экспериментов, применяя ранее изученное.

  • @ИванГайдеек-э1ь
    @ИванГайдеек-э1ь 9 месяцев назад

    Проблема вначале про не загрузку библиотеки PIllow решается с помощью апгрейда pip до новой версии (жёлтым было написано).

  • @grufilm
    @grufilm 9 месяцев назад

    Посмотрел я ваш код на гите, или мне ещё учиться и учиться или у вас уровень просто наивысший. Прямо есть чему поучиться. Всё так идеально, прям конфетка

    • @PythonDevelopment
      @PythonDevelopment 9 месяцев назад

      Спасибо большое, но уверяю это не идеал) Я сам много учился и многие видео и проекты создавал в процессе обучения. Просто старался сделать доступнее, как я бы понимал если бы был новичком. Удачного обучения.

  • @Feldspyt
    @Feldspyt Год назад

    Почему я нахожу подобные хорошие видео после того, как полдня проебался😁 спасибо, завтра пересмотрю и перепишу код.

  • @ДанилКрабов-и9ж

    Здравствуйте. Разработает простой сайт с регистрацией авторизацией на заказ?

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Привет, напишите в соцсетях в личку что нужно, какое тз и так далее. ✈️ Telegram: @MikesoWeb

  • @vladimirsmoktiy2040
    @vladimirsmoktiy2040 Год назад

    Спасибо за Beget, просто находка!

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Пожалуйста) Буду рад если станете рефералом, с вам не убудет, а мне копеечка.

    • @vladimirsmoktiy2040
      @vladimirsmoktiy2040 Год назад

      @@PythonDevelopment уже ;)

  • @kern5506
    @kern5506 Год назад

    Привет. Не работает модуль поиска. Выдает ошибку werkzeug.utils.ImportStringError: import_string() failed for 'flask_msearch.elasticsearch_backend.ElasticSearch'. Possible reasons are: - missing __init__.py in a package; - package or module path not included in sys.path; - duplicated package or module name taking precedence in sys.path; - missing module, class, function or variable; В settings.py прописал MSEARCH_BACKEND = "elasticsearch", результатов не дало. В документации ничего по этому поводу не нашел

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Привет, файл __init__.py в каталогах есть? Это необходимо для того, чтобы Python рассматривал каталог как пакет и мог импортировать его содержимое Так же, возможно, версия пакета или Python отличается от той, что была на момент записи урока

  • @kern5506
    @kern5506 Год назад

    Привет. Что то странное с секцией комментариев. Они залезают на футер и проходят сквозь него. Кучу времени перебирал стили, даже их скопировал у тебя - все тщетно. Все дивы на месте, не понимаю что происходит

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Привет, у меня было так же помню. В верстке не очень силен, надеюсь исправишь, отпишись )

  • @Эльмаррр
    @Эльмаррр Год назад

    urls 35:55

  • @666GooglMan66
    @666GooglMan66 Год назад

    Все круто, но тихо да:)

  • @Hdsgf-h7v
    @Hdsgf-h7v Год назад

    где ссылки

    • @PythonDevelopment
      @PythonDevelopment Год назад

      На гитхаб и на проект ссылки в описании

  • @ЭдуардЭфклидов

    Вопрос, допустим я распишу бекенд+фронт на хтмл, и захочу сделать подобное приложение под андроид какая то разница будет? Или так же с андроид-фронта приходит http request и все?

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Привет! Если вы создадите нативное приложение для Android, ваш бекенд на FastAPI будет работать точно так же, как и для веб-приложения. Андроид-приложение будет отправлять HTTP-запросы к вашему API, и с точки зрения сервера ничего не изменится. Однако, вам нужно будет адаптировать или полностью переписать фронтенд для нативной платформы.

  • @DimulyaPlay
    @DimulyaPlay Год назад

    Отличное видео, наконец попался человек, который раскидал приложение, маршруты и модели по разным файлам, смотрел до этого нескольких, они все в app фигачили. Есть ли хорошие видосы по применению семантика? играюсь с первым приложением, хочу вместо перехода по страницам авторизации попробовать попап меню, а также принимать ответ от сервера и выдавать алерты)

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Спасибо. Ну app.py набрасывают конечно часто, но я стараюсь так не делать а раскладывать. Основного паттерна я так понял нет, все делают как могут (может на других языках делали такую структуру и тут по привычке. Я сейчас активно JS применяю, скоро будут ролики. Семантик я применял для разнообразия в нескольких проектах, которые не публиковал.

  • @hitpau
    @hitpau Год назад

    А как же copy con для создания файлов и заполнения их в интерактивном режиме?)

  • @hitpau
    @hitpau Год назад

    rename dir или все-таки Remove Dir (RD) 😊

  • @alexserb3845
    @alexserb3845 Год назад

    спасибо)

  • @PythonDevelopment
    @PythonDevelopment Год назад

    Обновил приложение, но в отдельном репозитории его разместил Внес изменения: - Приложение теперь адаптивно к экранам различных устройств - Приложение логирует все действия пользователя в контексте CRUD операций - Добавил валидацию на пустое название задачи - для мобильной версии добавил JS-кнопку возвращения в начало списка задач Код залил в отдельный репозиторий чтобы не ломать старый, на который записан ролик Сам репо: github.com/MikesoWeb/ToDo-Django-Logging

  • @ФаризаЖаханша
    @ФаризаЖаханша Год назад

    Спасибо большое)

  • @petyaderyabin4136
    @petyaderyabin4136 Год назад

    Спасибо помог))

  • @timaqwez-playa
    @timaqwez-playa Год назад

    очень полезный гайд, помог разобраться в структуре построения приложения. спасибо большое.

  • @lalfit4866
    @lalfit4866 Год назад

    Здравствуйте, могу помочь по покупке курса за 💵

  • @razaqqazhet5656
    @razaqqazhet5656 Год назад

    thank you 👌

  • @ChrisNasredin
    @ChrisNasredin Год назад

    Не очень информативное видео, не показали про ветки, например, про то, как самому писать миграции, надеюсь, будет продолжение про alembic. Но тем не менее в видео очень ценная информация про ошибку миграции, об которую я споткнулся, за это прям больше человеческое спасибо. Находил конвенцию, но не понял, что делать с этим словарем, а оказывается нужно писать имя. Ну и полезно про пересоздание таблиц в sqlite с ключом render_as_batch, жаль, что раньше это видео не встретил, сэкономил бы себе часа полтора жизни, не ползал бы по стековерфлоу, так что однозначно лайк.

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Ну польза в самостоятельном поиске информации по блогам и форумам приносит тоже пользу) Я сам раньше постоянно искал так и документацию курил. Спасибо за отзыв.

  • @markeeff3406
    @markeeff3406 Год назад

    В целом понятно.

  • @руслангасак-ь9и

    У меня возник вопрос, почему ты используешь метод get для удаления и обновления. Я так понимаю чтобы не писать отдельные формы для каждого метода ?

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Я уже честно говоря не помню, учился ролик выкладывал. В некоторых случаях можно использовать метод GET для удаления или обновления данных, особенно если хочешь упростить архитектуру приложения и избежать создания дополнительных маршрутов. Вообще рекомендуется придерживаться стандартной практики и использовать методы PUT, PATCH и DELETE для обновления и удаления данных, чтобы соблюдать принципы RESTful API и обеспечить понятное взаимодействие с API.

  • @simongolovinskiy2959
    @simongolovinskiy2959 Год назад

    Привет, подскажи, пожалуйста, сделал все как надо, однако в консоли python при вызова метода User.query.all() выдает странное исключение. Пишет отсебятину полную. Traceback (most recent call last): File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\engine\base.py", line 1702, in _execute_context context = constructor( File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\engine\default.py", line 1013, in _init_compiled self.cursor = self.create_cursor() File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\engine\default.py", line 1361, in create_cursor return self.create_default_cursor() File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\engine\default.py", line 1364, in create_default_cursor return self._dbapi_connection.cursor() File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\pool\base.py", line 1083, in cursor return self.dbapi_connection.cursor(*args, **kwargs) sqlite3.ProgrammingError: SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 7064 and this is thread id 3336. The above exception was the direct cause of the following exception: Traceback (most recent call last): File "<input>", line 1, in <module> File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\orm\query.py", line 2759, in all return self._iter().all() File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\orm\query.py", line 2894, in _iter result = self.session.execute( File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\orm\session.py", line 1692, in execute result = conn._execute_20(statement, params or {}, execution_options) File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\engine\base.py", line 1614, in _execute_20 return meth(self, args_10style, kwargs_10style, execution_options) File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\sql\elements.py", line 325, in _execute_on_connection return connection._execute_clauseelement( File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\engine\base.py", line 1481, in _execute_clauseelement ret = self._execute_context( File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\engine\base.py", line 1708, in _execute_context self._handle_dbapi_exception( File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\engine\base.py", line 2026, in _handle_dbapi_exception util.raise_( File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\util\compat.py", line 207, in raise_ raise exception File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\engine\base.py", line 1702, in _execute_context context = constructor( File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\engine\default.py", line 1013, in _init_compiled self.cursor = self.create_cursor() File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\engine\default.py", line 1361, in create_cursor return self.create_default_cursor() File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\engine\default.py", line 1364, in create_default_cursor return self._dbapi_connection.cursor() File "C:\Users\wasa\PycharmProjects\Task-Manager\venv\lib\site-packages\sqlalchemy\pool\base.py", line 1083, in cursor return self.dbapi_connection.cursor(*args, **kwargs) sqlalchemy.exc.ProgrammingError: (sqlite3.ProgrammingError) SQLite objects created in a thread can only be used in that same thread. The object was created in thread id 7064 and this is thread id 3336. [SQL: SELECT user.id AS user_id, user.username AS user_username, user.email AS user_email, user.img_file AS user_img_file, user.password AS user_password FROM user] (Background on this error at: sqlalche.me/e/14/f405) Даже не знаю в чем проблема, перерыл половину интернета.

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Привет,Background on this error at: sqlalche.me/e/14/f405 ссылка ведет на страницу документации SQLAlchemy, где объясняется ошибка "ProgrammingError" и предоставляются рекомендации по ее решению. На странице будет описано, что ошибка связана с использованием объектов SQLite в разных потоках и какие действия можно предпринять для решения проблемы. Для исправления проблемы тебе необходимо убедиться, что каждый поток использует свое собственное соединение с базой данных, либо использовать механизмы, такие как scoped_session или sessionmaker в SQLAlchemy, чтобы обеспечить корректное управление соединениями в разных потоках.

    • @simongolovinskiy2959
      @simongolovinskiy2959 Год назад

      Спасибо, уже решил. Нужно просто в sqlite проверку на треды отключать)

  • @djdjdjdoggnikioki4339
    @djdjdjdoggnikioki4339 Год назад

    Здравствуйте, подскажите пожалуйста как сделать школьный тест на flask?

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Привет, имеется ввиду без знания языка и фреймворка? Просто если вы спишете и покажете проект, выдав за свой толку для вас будет мало в контексте как начинающего разработчика. Что за тест? Какие задачи?

    • @djdjdjdoggnikioki4339
      @djdjdjdoggnikioki4339 Год назад

      Я знаю фреймворк и язык на базовом уровне, просмотрел полностью ваш гайд по фласк. Нужно что бы пользователь мог пройти тест с четырьмя вариантами ответа(3 из 4 не правильные). Вот в чем дело

    • @djdjdjdoggnikioki4339
      @djdjdjdoggnikioki4339 Год назад

      @@PythonDevelopment просто нужно доделать проект для учебы. Вот как

    • @PythonDevelopment
      @PythonDevelopment Год назад

      @@djdjdjdoggnikioki4339 используй формы Flask-WTF модуля Создай класс TestSchoolForm class TestForm(FlaskForm): question_1 = RadioField('Какой столицей является Париж?', choices=[('Москва', 'Москва'), ('Лондон', 'Лондон'), ('Париж', 'Париж'), ('Берлин', 'Берлин')], validators=[DataRequired()]) submit = SubmitField('Отправить') Это пример одного вопроса и ответов Маршрут для теста (можешь добавить id для одного ответа в маршрут) @app.route('/test', methods=['GET', 'POST']) def test(): form = TestSchoolForm() if form.validate_on_submit(): score = calculate_score(form) return redirect(url_for('results', score=score)) return render_template('test.html', form=form) Функция calculate_score: test_model = [ { 'question': 'Какой столицей является Париж?', 'answers': ['Москва', 'Лондон', 'Париж', 'Берлин'], 'correct_answer': 'Париж' } def calculate_score(form): score = 0 # Получение ответов пользователя из формы user_answers = { 'question_1': form.question_1.data, } for question in test_model: question_field = f'question_{test_model.index(question) + 1}' correct_answer = question['correct_answer'] user_answer = user_answers[question_field] if user_answer == correct_answer: score += 1 return score Попробуй подумать над этим

  • @data_borodata
    @data_borodata Год назад

    супер курс! Спасибо Михаил! Один вопрос, репозиторий вы умышленно не публикуете. очень неудобно вручную перебивать код с видео на ютубе

    • @PythonDevelopment
      @PythonDevelopment Год назад

      В каком-то ролике дальше в описании был репозиторий с кодом. Я потом переписал весь код блога, там уже другой код

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Спасибо )

  • @Bkmz58
    @Bkmz58 Год назад

    спасибо

  • @Andy-cu5qg
    @Andy-cu5qg Год назад

    привет, пожалуйста разделяй ролики на маленькие части(на 10-15 минут), когда нужно что-то быстро глянуть задалбываешся листать)

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Привет, ну хоть такое есть)) Хорошо, приму к сведению

  • @neosmitt3085
    @neosmitt3085 Год назад

    👍

  • @fizikotik
    @fizikotik Год назад

    привет! Подскажи, пожалуйста, как ftp соединение возобновить или сделать чтобы оно не вырубалось?Сделал прогу с применением инфы из твоих уроков. Все круто.. но программа больше 2х минут отказывается работать. Если перезагрузить ювикорн, то снова работает короткое время. Думаю, что проблема в считывании json с хоста.

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Привет. FTP или HTTPS? А есть какие-то логи? Скинь текст ошибки, чтобы более детально понимать.

    • @fizikotik
      @fizikotik Год назад

      @@PythonDevelopment Благодарю, что ответил! Я на почту лог отправил

    • @PythonDevelopment
      @PythonDevelopment Год назад

      @@fizikotik ответил. Если поможет, напиши как исправил.

    • @fizikotik
      @fizikotik Год назад

      @@PythonDevelopment прочитал, буду решать! Что поможет - отпишусь ) благодарю!

    • @fizikotik
      @fizikotik Год назад

      @@PythonDevelopment решение нашел в том, чтобы перенести ftplib и ftp.login в функцию эндпоинта. До этого подключение осуществлял в начале кода. Теперь же, при каждом вводе переменных, происходит коннект к хосту. Таким образом все срабатывает стабильно.

  • @sadandpathetic
    @sadandpathetic Год назад

    Прекрасный урок! Этот канал - открытие для меня. Можете сказать, с чего Вы начали изучать HTML и CSS, и что можете посоветовать?

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Привет. Спасибо за отзыв, очень важный для канала. Я с HTML познакомился еще в 2001 году. Позже делал простые страницы, изучал стили. Не скажу что упорно делал это, но под нужные мне задачи получалось. HTML + CSS обязательно если хотите в веб, да и вообще если бекенд, то хотя бы более-менее красиво выводить свои данные. Учить не обязательно все. Используйте под свои задачи и постепенно расширяйтесь. Основы каркаса страницы, как работают стили (каскадно). В общем, база будет и дальше всё само пойдет. Если будет тяжело, разбивайте на части. Пишите код руками без копирования.

  • @neosmitt3085
    @neosmitt3085 Год назад

    У меня вопрос а зачем путь полный писать для импорта формы blog.main.forms? по идеи это же blueprint он должен быть независим от путей, вот например использовать относительно из from .forms import LoginForm

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Да, вы правы, можно использовать относительный импорт для импорта формы из blueprint. Однако, при использовании полного пути, это позволяет избежать потенциальных конфликтов и ошибок импорта, особенно в более крупных проектах, где могут быть несколько форм с одинаковым именем, расположенных в разных модулях. Кроме того, использование полного пути импорта может быть более явным и понятным для других разработчиков, работающих над проектом. Если вы используете blueprint в нескольких приложениях, то импорт из конкретного blueprint может быть важным для определения, к какой части приложения относится данная форма. В целом, выбор между относительным и полным импортом зависит от предпочтений и ситуации, но в некоторых случаях полный путь импорта может быть более удобным и безопасным выбором.

  • @useruser-bx9zf
    @useruser-bx9zf Год назад

    Подскажите, почему могут не отображаться поля ForeignKey (связи не отображаются)? Склонировал ваш проект с guthub запустил и тоже отсутствуют связанные поля (При использовании самых последних версий библиотек)

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Я сейчас склонировал запустил работает. А где именно не работает? Я использовал заблокированный в req.txt библиотеки

  • @ValiShugaibov
    @ValiShugaibov Год назад

    спасибо за урок!

  • @fizikotik
    @fizikotik Год назад

    Продолжаю осваивать Питон!) Благодарю за очередной урок, Михаил!

  • @orthodox-chanel
    @orthodox-chanel Год назад

    Ты это серьезно? под каждую статью создавать новую страницу? зачем тогда вообще фласк использовать😀

    • @PythonDevelopment
      @PythonDevelopment Год назад

      Наверно имелось ввиду для статических страниц. Уже не помню, но я понял. Когда сам учился, выкладывал ролики. Если ты про главное меню, которое на главной странице.

  • @alexeymatveev9031
    @alexeymatveev9031 Год назад

    Больше спасибо отличный ролик!