- Видео 104
- Просмотров 107 578
MIKE DO IT
Россия
Добавлен 5 янв 2007
Добро пожаловать на канал о языке программирования Python и веб-фреймворках FastAPI, Flask и Django!
Здесь мы исследуем мощь и многосторонность языка Python и глубоко погружаемся в мир веб-разработки с помощью фреймворков FastAPI, Flask и Django.
Миссия - образовывать и вдохновлять разработчиков, чтобы они создавали потрясающие веб-приложения с использованием последних инструментов и технологий.
Как научиться программировать?
Просто подписывайся и постоянно практикуйся, мой друг!
🔗 Связь с автором:
🌐 Официальный сайт: my-py.ru
💬 VK: Группа VK python_for_me
✈️ Telegram: Канал Telegram t.me/mikedoitchannel
👾 GitHub: Профиль GitHub github.com/MikesoWeb
❤️ Поддержать автора:
💳Сбербанк: 4274 3200 7161 9756
🔔 DonationAlerts www.donationalerts.com/r/mikedoit
🌟Boosty boosty.to/mike_do_it
Здесь мы исследуем мощь и многосторонность языка Python и глубоко погружаемся в мир веб-разработки с помощью фреймворков FastAPI, Flask и Django.
Миссия - образовывать и вдохновлять разработчиков, чтобы они создавали потрясающие веб-приложения с использованием последних инструментов и технологий.
Как научиться программировать?
Просто подписывайся и постоянно практикуйся, мой друг!
🔗 Связь с автором:
🌐 Официальный сайт: my-py.ru
💬 VK: Группа VK python_for_me
✈️ Telegram: Канал Telegram t.me/mikedoitchannel
👾 GitHub: Профиль GitHub github.com/MikesoWeb
❤️ Поддержать автора:
💳Сбербанк: 4274 3200 7161 9756
🔔 DonationAlerts www.donationalerts.com/r/mikedoit
🌟Boosty boosty.to/mike_do_it
Как разместить 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: наш...
В этом видео я хочу поделиться с вами процессом развертывания веб-приложения на 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
спасибо, очень помог
Как создать еще один проект в джанго у меня не получается пишут нет файла джанго-админ
Нарушена структура проекта. python manage.py startapp имя_приложения INSTALLED_APPS = [ # другие приложения 'имя_приложения', ]
Расскажи про сокеты. Кто за отлайкайте!
Спасибо огромное за отзыв, друг. Я сейчас на новой работе и уже не могу снимать видео, так как другие инструменты и задачи. В любом случае есть множество ребят, которые снимают различные видео по Flask и вообще сетевой инфраструктуре и я уверен что делают это не хуже. Я бы с радостью вернулся к каналу, но задач навалено много и времени не хватает. Но я очень благодарен вам, тем кто смотрит и пробует себя в этой дисциплине.
Лучшее видео, лучший по фласку! Из добавления кнопка вставить shift + insert тк вначале часто тупка с этим Расскажи как БД привязать в виртуальном сервере
Ваш отзыв как бальзам на душу. Вопрос в конкретной 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 Спасибо большое, будут вопросы, пиши.
Нельзя под рутом это все делать :)
молодец лучшее видео по фласку
Спасибо большое, делал как для себя так и для вас )
Спасибочки :3
Добрый, день! Спасибо вам за ролики, очень помогает писать свое первое приложение на Фласк. Есть вопрос- если у меня в модели в поле есть атрибут nullable=False, стоит ли в роутах админки дублировать о необходимости заполнения того же поля? через form_args = { 'name': dict(label='Name', validators=[DataRequired()]), } Так и так работает.
Добрый день! Рад слышать, что ролики оказались полезны для вас! Что касается вашего вопроса, то использование атрибута nullable=False в модели гарантирует, что база данных не примет запись без значения в этом поле. Это хорошая практика для обеспечения целостности данных на уровне базы данных. В то же время, добавление валидатора DataRequired() в форму на стороне приложения позволяет отлавливать ошибки до того, как они достигнут базы данных. Это может улучшить пользовательский опыт, так как позволяет предоставить более понятные сообщения об ошибках и избежать ненужных запросов к базе данных, если данные не проходят валидацию. Таким образом, хотя технически это может показаться дублированием, на самом деле это два разных уровня валидации, и каждый из них служит своей цели. Валидация на стороне приложения обеспечивает лучший интерфейс и защиту от некорректного ввода данных пользователем, а валидация на стороне базы данных гарантирует целостность данных на более глубоком уровне. Так что да, стоит дублировать валидацию в роутах админки, чтобы обеспечить наилучший опыт для пользователя и надежность работы приложения.
@@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.
@@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) Не забудьте также обработать удаление изображений, если они больше не нужны, чтобы избежать накопления неиспользуемых файлов на сервере. Это лишь пример, и вам, возможно, потребуется адаптировать его под вашу конкретную ситуацию, учитывая пути сохранения файлов, обработку ошибок и другие аспекты работы с файлами в вашем приложении.
@@PythonDevelopment , супер! Спасибо!
@@PythonDevelopment Супер, спасибо!
В html шаблонах Django используется свой шаблонизатор и это точно не Jinja как во Flask. Можно проверить в списке установленных через pip list и убедится что Jinja там нет.
Точно. Спасибо за комментарий
Спасибо! Очень хороший пример готового проекта!
Спасибо
Больше спасибо за ролик
Ваша благодарность, моя награда) Спасибо
очень полезный ролик, как то я сам не додумался что можно просто через цикл увидеть содержание базового конфига
Очень рад что вам пригодилось) И вам спасибо за просмотр и отзыв. Я просто не смотрел чужие ролики, а всё ковырял сам до самых низов и ставил множества экспериментов, применяя ранее изученное.
Проблема вначале про не загрузку библиотеки PIllow решается с помощью апгрейда pip до новой версии (жёлтым было написано).
Посмотрел я ваш код на гите, или мне ещё учиться и учиться или у вас уровень просто наивысший. Прямо есть чему поучиться. Всё так идеально, прям конфетка
Спасибо большое, но уверяю это не идеал) Я сам много учился и многие видео и проекты создавал в процессе обучения. Просто старался сделать доступнее, как я бы понимал если бы был новичком. Удачного обучения.
Почему я нахожу подобные хорошие видео после того, как полдня проебался😁 спасибо, завтра пересмотрю и перепишу код.
Это жиза) Спасибо
Здравствуйте. Разработает простой сайт с регистрацией авторизацией на заказ?
Привет, напишите в соцсетях в личку что нужно, какое тз и так далее. ✈️ Telegram: @MikesoWeb
Спасибо за Beget, просто находка!
Пожалуйста) Буду рад если станете рефералом, с вам не убудет, а мне копеечка.
@@PythonDevelopment уже ;)
Привет. Не работает модуль поиска. Выдает ошибку 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", результатов не дало. В документации ничего по этому поводу не нашел
Привет, файл __init__.py в каталогах есть? Это необходимо для того, чтобы Python рассматривал каталог как пакет и мог импортировать его содержимое Так же, возможно, версия пакета или Python отличается от той, что была на момент записи урока
Привет. Что то странное с секцией комментариев. Они залезают на футер и проходят сквозь него. Кучу времени перебирал стили, даже их скопировал у тебя - все тщетно. Все дивы на месте, не понимаю что происходит
Привет, у меня было так же помню. В верстке не очень силен, надеюсь исправишь, отпишись )
urls 35:55
Все круто, но тихо да:)
где ссылки
На гитхаб и на проект ссылки в описании
Вопрос, допустим я распишу бекенд+фронт на хтмл, и захочу сделать подобное приложение под андроид какая то разница будет? Или так же с андроид-фронта приходит http request и все?
Привет! Если вы создадите нативное приложение для Android, ваш бекенд на FastAPI будет работать точно так же, как и для веб-приложения. Андроид-приложение будет отправлять HTTP-запросы к вашему API, и с точки зрения сервера ничего не изменится. Однако, вам нужно будет адаптировать или полностью переписать фронтенд для нативной платформы.
Отличное видео, наконец попался человек, который раскидал приложение, маршруты и модели по разным файлам, смотрел до этого нескольких, они все в app фигачили. Есть ли хорошие видосы по применению семантика? играюсь с первым приложением, хочу вместо перехода по страницам авторизации попробовать попап меню, а также принимать ответ от сервера и выдавать алерты)
Спасибо. Ну app.py набрасывают конечно часто, но я стараюсь так не делать а раскладывать. Основного паттерна я так понял нет, все делают как могут (может на других языках делали такую структуру и тут по привычке. Я сейчас активно JS применяю, скоро будут ролики. Семантик я применял для разнообразия в нескольких проектах, которые не публиковал.
А как же copy con для создания файлов и заполнения их в интерактивном режиме?)
rename dir или все-таки Remove Dir (RD) 😊
спасибо)
Обновил приложение, но в отдельном репозитории его разместил Внес изменения: - Приложение теперь адаптивно к экранам различных устройств - Приложение логирует все действия пользователя в контексте CRUD операций - Добавил валидацию на пустое название задачи - для мобильной версии добавил JS-кнопку возвращения в начало списка задач Код залил в отдельный репозиторий чтобы не ломать старый, на который записан ролик Сам репо: github.com/MikesoWeb/ToDo-Django-Logging
Спасибо большое)
Спасибо помог))
очень полезный гайд, помог разобраться в структуре построения приложения. спасибо большое.
Здравствуйте, могу помочь по покупке курса за 💵
Привет, какого курса?
thank you 👌
Не очень информативное видео, не показали про ветки, например, про то, как самому писать миграции, надеюсь, будет продолжение про alembic. Но тем не менее в видео очень ценная информация про ошибку миграции, об которую я споткнулся, за это прям больше человеческое спасибо. Находил конвенцию, но не понял, что делать с этим словарем, а оказывается нужно писать имя. Ну и полезно про пересоздание таблиц в sqlite с ключом render_as_batch, жаль, что раньше это видео не встретил, сэкономил бы себе часа полтора жизни, не ползал бы по стековерфлоу, так что однозначно лайк.
Ну польза в самостоятельном поиске информации по блогам и форумам приносит тоже пользу) Я сам раньше постоянно искал так и документацию курил. Спасибо за отзыв.
В целом понятно.
У меня возник вопрос, почему ты используешь метод get для удаления и обновления. Я так понимаю чтобы не писать отдельные формы для каждого метода ?
Я уже честно говоря не помню, учился ролик выкладывал. В некоторых случаях можно использовать метод GET для удаления или обновления данных, особенно если хочешь упростить архитектуру приложения и избежать создания дополнительных маршрутов. Вообще рекомендуется придерживаться стандартной практики и использовать методы PUT, PATCH и DELETE для обновления и удаления данных, чтобы соблюдать принципы RESTful API и обеспечить понятное взаимодействие с API.
Привет, подскажи, пожалуйста, сделал все как надо, однако в консоли 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) Даже не знаю в чем проблема, перерыл половину интернета.
Привет,Background on this error at: sqlalche.me/e/14/f405 ссылка ведет на страницу документации SQLAlchemy, где объясняется ошибка "ProgrammingError" и предоставляются рекомендации по ее решению. На странице будет описано, что ошибка связана с использованием объектов SQLite в разных потоках и какие действия можно предпринять для решения проблемы. Для исправления проблемы тебе необходимо убедиться, что каждый поток использует свое собственное соединение с базой данных, либо использовать механизмы, такие как scoped_session или sessionmaker в SQLAlchemy, чтобы обеспечить корректное управление соединениями в разных потоках.
Спасибо, уже решил. Нужно просто в sqlite проверку на треды отключать)
Здравствуйте, подскажите пожалуйста как сделать школьный тест на flask?
Привет, имеется ввиду без знания языка и фреймворка? Просто если вы спишете и покажете проект, выдав за свой толку для вас будет мало в контексте как начинающего разработчика. Что за тест? Какие задачи?
Я знаю фреймворк и язык на базовом уровне, просмотрел полностью ваш гайд по фласк. Нужно что бы пользователь мог пройти тест с четырьмя вариантами ответа(3 из 4 не правильные). Вот в чем дело
@@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 Попробуй подумать над этим
супер курс! Спасибо Михаил! Один вопрос, репозиторий вы умышленно не публикуете. очень неудобно вручную перебивать код с видео на ютубе
В каком-то ролике дальше в описании был репозиторий с кодом. Я потом переписал весь код блога, там уже другой код
Спасибо )
спасибо
И вам спасибо за отзыв.
привет, пожалуйста разделяй ролики на маленькие части(на 10-15 минут), когда нужно что-то быстро глянуть задалбываешся листать)
Привет, ну хоть такое есть)) Хорошо, приму к сведению
👍
Спасибо за фидбек)
привет! Подскажи, пожалуйста, как ftp соединение возобновить или сделать чтобы оно не вырубалось?Сделал прогу с применением инфы из твоих уроков. Все круто.. но программа больше 2х минут отказывается работать. Если перезагрузить ювикорн, то снова работает короткое время. Думаю, что проблема в считывании json с хоста.
Привет. FTP или HTTPS? А есть какие-то логи? Скинь текст ошибки, чтобы более детально понимать.
@@PythonDevelopment Благодарю, что ответил! Я на почту лог отправил
@@fizikotik ответил. Если поможет, напиши как исправил.
@@PythonDevelopment прочитал, буду решать! Что поможет - отпишусь ) благодарю!
@@PythonDevelopment решение нашел в том, чтобы перенести ftplib и ftp.login в функцию эндпоинта. До этого подключение осуществлял в начале кода. Теперь же, при каждом вводе переменных, происходит коннект к хосту. Таким образом все срабатывает стабильно.
Прекрасный урок! Этот канал - открытие для меня. Можете сказать, с чего Вы начали изучать HTML и CSS, и что можете посоветовать?
Привет. Спасибо за отзыв, очень важный для канала. Я с HTML познакомился еще в 2001 году. Позже делал простые страницы, изучал стили. Не скажу что упорно делал это, но под нужные мне задачи получалось. HTML + CSS обязательно если хотите в веб, да и вообще если бекенд, то хотя бы более-менее красиво выводить свои данные. Учить не обязательно все. Используйте под свои задачи и постепенно расширяйтесь. Основы каркаса страницы, как работают стили (каскадно). В общем, база будет и дальше всё само пойдет. Если будет тяжело, разбивайте на части. Пишите код руками без копирования.
У меня вопрос а зачем путь полный писать для импорта формы blog.main.forms? по идеи это же blueprint он должен быть независим от путей, вот например использовать относительно из from .forms import LoginForm
Да, вы правы, можно использовать относительный импорт для импорта формы из blueprint. Однако, при использовании полного пути, это позволяет избежать потенциальных конфликтов и ошибок импорта, особенно в более крупных проектах, где могут быть несколько форм с одинаковым именем, расположенных в разных модулях. Кроме того, использование полного пути импорта может быть более явным и понятным для других разработчиков, работающих над проектом. Если вы используете blueprint в нескольких приложениях, то импорт из конкретного blueprint может быть важным для определения, к какой части приложения относится данная форма. В целом, выбор между относительным и полным импортом зависит от предпочтений и ситуации, но в некоторых случаях полный путь импорта может быть более удобным и безопасным выбором.
Подскажите, почему могут не отображаться поля ForeignKey (связи не отображаются)? Склонировал ваш проект с guthub запустил и тоже отсутствуют связанные поля (При использовании самых последних версий библиотек)
Я сейчас склонировал запустил работает. А где именно не работает? Я использовал заблокированный в req.txt библиотеки
спасибо за урок!
Пожалуйста)
Продолжаю осваивать Питон!) Благодарю за очередной урок, Михаил!
Ты это серьезно? под каждую статью создавать новую страницу? зачем тогда вообще фласк использовать😀
Наверно имелось ввиду для статических страниц. Уже не помню, но я понял. Когда сам учился, выкладывал ролики. Если ты про главное меню, которое на главной странице.
Больше спасибо отличный ролик!
И вам спасибо за фитбек )