Django - Добавление новой категории в форме создания поста без перезагрузки страницы
Автор: Иван Ашихмин
Встроенная панель администратора - одно из главных преимуществ фреймворка Django. Это весьма функциональный и удобный инструмент. Одна из его возможностей - это добавление связанного с моделью объекта на странице создания этого самого объекта.
Например, у нас есть модель поста с внешним ключом к модели категории. Открыв страницу создания нового поста в панели администратора, мы можем добавить новую категорию не теряя заполненные данные, не переключаясь на другие страницы.
С появлением первых постов на канале ко мне обратились с вопросом: "Возможно ли реализовать функционал из панели администратора на страницах сайта?". Это меня заинтересовало, но ввиду того, что не было необходимости, решение данной задачи было отложено. При создании функционала для авторов я вернулся к этому вопросу.
Автор: Иван Ашихмин
Встроенная панель администратора - одно из главных преимуществ фреймворка Django. Это весьма функциональный и удобный инструмент. Одна из его возможностей - это добавление связанного с моделью объекта на странице создания этого самого объекта.
Например, у нас есть модель поста с внешним ключом к модели категории. Открыв страницу создания нового поста в панели администратора, мы можем добавить новую категорию не теряя заполненные данные, не переключаясь на другие страницы.
С появлением первых постов на канале ко мне обратились с вопросом: "Возможно ли реализовать функционал из панели администратора на страницах сайта?". Это меня заинтересовало, но ввиду того, что не было необходимости, решение данной задачи было отложено. При создании функционала для авторов я вернулся к этому вопросу.
🔥2
В этом посте будем продолжать написанное в "Django 37. Две формы - добавление категории и файла", а именно, добавим возможность создать новую категорию или добавить новый файл без перезагрузки страницы.
Продолжение в посте на Boosty (платный контент)
Пост на сайте
Поддержать проект
#Django #Гайды #ООП #формы #представления #Код_на_салфетке #наследования #классы #Boosty
Продолжение в посте на Boosty (платный контент)
Пост на сайте
Поддержать проект
#Django #Гайды #ООП #формы #представления #Код_на_салфетке #наследования #классы #Boosty
🔥2
Зарождение проекта...
Автор: Некий Вестник Сплетен
Итак, начнём сначала..
Чат "Кот на салфетке" объединил в себе множество разных людей с отличающимися характерами и интересами, разного возраста и географии. Но всех нас объединяет любовь к программированию. Здесь общение происходит абсолютно на разные темы.. И это прекрасно! В обычное время это выглядит слегка "безумно" и человек "со стороны" может испугаться или счесть нас сумасшедшими. Но порой здесь можно встретить интересные темы, задачи, идеи.
В один из вечеров поступило предложение сделать групповой проект и даже была предложена идея, что-то связанное с фанфиками. Один из участников обсуждения вызвался подготовить ТЗ для проекта, остальные поддержали его инициативу и стали ждать. Прошёл день, два, три.. Но ТЗ так и не было начато. Выяснилось, что у "желающего" не стало на это времени. Периодами разговоры снова возрождались и снова затихали.
Автор: Некий Вестник Сплетен
Итак, начнём сначала..
Чат "Кот на салфетке" объединил в себе множество разных людей с отличающимися характерами и интересами, разного возраста и географии. Но всех нас объединяет любовь к программированию. Здесь общение происходит абсолютно на разные темы.. И это прекрасно! В обычное время это выглядит слегка "безумно" и человек "со стороны" может испугаться или счесть нас сумасшедшими. Но порой здесь можно встретить интересные темы, задачи, идеи.
В один из вечеров поступило предложение сделать групповой проект и даже была предложена идея, что-то связанное с фанфиками. Один из участников обсуждения вызвался подготовить ТЗ для проекта, остальные поддержали его инициативу и стали ждать. Прошёл день, два, три.. Но ТЗ так и не было начато. Выяснилось, что у "желающего" не стало на это времени. Периодами разговоры снова возрождались и снова затихали.
🔥4
...Прошло две недели...
Так не могло продолжаться дальше. Не допустимо было допускать это откладывание, оттягивание и отсутствие собранности.
Тогда было решено создать отдельный чат и приступить к работе уже непосредственно с теми, кто желает этим заниматься. Создали чат, нарекли его на временной основе - "Некий проект", разместили ссылку в "Коте на салфетке", по которой желающие участвовать в проекте могли присоединиться самостоятельно.
Таким образом, собралась команда из 14 человек:
9 Backend-разработчиков
2 Frontend-разработчика
2 UX/UI-дизайнера
1 Project-менеджер
И началась череда созвонов...
Пост на сайте
Поддержать проект
#Кот_на_салфетке #Backend #Код_на_салфетке #Некий_проект #UI #созвоны #групповой_проект #UX #Frontend #Project
Так не могло продолжаться дальше. Не допустимо было допускать это откладывание, оттягивание и отсутствие собранности.
Тогда было решено создать отдельный чат и приступить к работе уже непосредственно с теми, кто желает этим заниматься. Создали чат, нарекли его на временной основе - "Некий проект", разместили ссылку в "Коте на салфетке", по которой желающие участвовать в проекте могли присоединиться самостоятельно.
Таким образом, собралась команда из 14 человек:
9 Backend-разработчиков
2 Frontend-разработчика
2 UX/UI-дизайнера
1 Project-менеджер
И началась череда созвонов...
Пост на сайте
Поддержать проект
#Кот_на_салфетке #Backend #Код_на_салфетке #Некий_проект #UI #созвоны #групповой_проект #UX #Frontend #Project
🔥5
Приветствую.
На канале сейчас активна только одна рубрика с гайдами и та посвящена Django. Помимо есть три информационные: про питон, про стажировку и про наш групповой проект.
Нужна ваша помощь. На какую тему вы бы хотели видеть гайды кроме Джанго?
Пишите в комментарии общую технологию или конкретные библиотеки, идеи или вещи.
Спасибо.
На канале сейчас активна только одна рубрика с гайдами и та посвящена Django. Помимо есть три информационные: про питон, про стажировку и про наш групповой проект.
Нужна ваша помощь. На какую тему вы бы хотели видеть гайды кроме Джанго?
Пишите в комментарии общую технологию или конкретные библиотеки, идеи или вещи.
Спасибо.
Начало работ
Автор: Иван Ашихмин
Прошел месяц с начала стажировки.
Первые пару недель заняли организационные вопросы:
- Формирование команд - Наш проект единственный разрабатывается на Django + VueJS, поэтому формирование команды не заняло много времени.
- Чаты - Сформировали чат всего проекта, а также чаты направлений.
- Доступы - Предоставили доступ к сервису Mattermost. Это такой "корпоративный чат" с разными "каналами", SCRUM-доской и так далее. Никогда с ним ранее не сталкивался, но, по словам организаторов, этот сервис используют многие IT-компании.
Автор: Иван Ашихмин
Прошел месяц с начала стажировки.
Первые пару недель заняли организационные вопросы:
- Формирование команд - Наш проект единственный разрабатывается на Django + VueJS, поэтому формирование команды не заняло много времени.
- Чаты - Сформировали чат всего проекта, а также чаты направлений.
- Доступы - Предоставили доступ к сервису Mattermost. Это такой "корпоративный чат" с разными "каналами", SCRUM-доской и так далее. Никогда с ним ранее не сталкивался, но, по словам организаторов, этот сервис используют многие IT-компании.
🔥5👍1
- Документы - На подписание дали два документа: Разрешение на обработку персональных данных и Соглашение о неразглашении (NDA). NDA в нашем случае с послаблениями, а именно, мы можем использовать собственно написанный код для предоставления работодателям или в обучающих целях. Тем не менее, публиковать полный код или результаты работы команды строго-настрого запрещено. Подписывал подобное в первый раз, предварительно связавшись с директором Академии LAD и уточнив, что мне можно рассказывать.
Потом была пара общих собраний, на которых в основном обсуждалась концепция проекта. Я на этих звонках сидел "ниже воды, тише травы", поскольку всё это для меня в новинку и, по правде говоря, мало что понимал в обсуждениях. Сидел, слушал, пытался уяснить и набирался опыта.
Объяснили, как работать в Mattermost и как будут распределяться задачи на SCRUM-доске. Придётся привыкать к нему, так как, не считая Telegram-чатов для "быстрого" реагирования, это должно стать основным место для обсуждений.
Продакты провели анализ конкурентов и предоставили варианты направления развития проекта.
Сейчас они продолжают исследования, для этого запустили опрос среди тех кто покупал курсы по обучению программированию себе или детям. Если есть желание помочь в исследовании, можете заполнить анкету по ссылке: https://docs.google.com/forms/d/e/1FAIpQLScmkxKpesSroNG0GYxuUS8ruOIjObQ1otITffpBoBPhFQvXBw/viewform
С бэками созванивались два раза.
Первый созвон был для знакомства с командой. На нём нужно было рассказать о себе. Я, конечно, волновался, потому что не очень понимал, что рассказать о себе. Но, послушав остальных, сумел кое-как рассказать о своем опыте и навыках. Команда подобралась разношерстная.
Второй созвон оказался интереснее и был посвящён обсуждению начала работы над проектом. Знания некоторых коллег впечатляют, но не могу сказать, чтобы я в целом в чём-то отставал, хотя теперь стало понятно, что в своем стеке надо подтянуть: работу с кастомной моделью пользователя и токенами аутентификации.
В самом начале определился лид команды - самый активный участник группы.
Сейчас, пока продакты исследуют рынок, а проджекты с аналитиками готовят документацию, перед нами стоит задача развернуть проект в репозитории и сделать базовую регистрацию, авторизацию и сброс пароля.
Определились с задачами:
- Организовать "основу" проекта и правила работы в репозитории.
- Сделать авторизацию и регистрацию с использованием Django REST Framework и JSON Web Token.
- Реализовать сброс пароля зарегистрированного пользователя.
Первую задачу взял на себя наш лид. После того, как он всё сделает, а мы это изучим, созвонимся снова и распределим оставшиеся задачи.
На удивление, мне есть, что предложить проекту, а именно у меня есть небольшой опыт работы с JWT аутентификацией между Django и Vue. Конечно, тут всё серьёзнее, чем на моём lkeep.ru, но, тем не менее, я не "хлопаю глазами" и не задаюсь вопросом "а как?".
В общем, наконец-то началось "движение". Очень интересно, в каком направлении пойдёт проект после исследования, какие задачи придётся выполнять и как будет выглядеть процесс взаимодействия с командой.
Пост на сайте
Поддержать проект
#Django #Стажировка #LAD_Academy #Backend #Код_на_салфетке #Frontend #Project #Product #Analytic #Vue
Потом была пара общих собраний, на которых в основном обсуждалась концепция проекта. Я на этих звонках сидел "ниже воды, тише травы", поскольку всё это для меня в новинку и, по правде говоря, мало что понимал в обсуждениях. Сидел, слушал, пытался уяснить и набирался опыта.
Объяснили, как работать в Mattermost и как будут распределяться задачи на SCRUM-доске. Придётся привыкать к нему, так как, не считая Telegram-чатов для "быстрого" реагирования, это должно стать основным место для обсуждений.
Продакты провели анализ конкурентов и предоставили варианты направления развития проекта.
Сейчас они продолжают исследования, для этого запустили опрос среди тех кто покупал курсы по обучению программированию себе или детям. Если есть желание помочь в исследовании, можете заполнить анкету по ссылке: https://docs.google.com/forms/d/e/1FAIpQLScmkxKpesSroNG0GYxuUS8ruOIjObQ1otITffpBoBPhFQvXBw/viewform
С бэками созванивались два раза.
Первый созвон был для знакомства с командой. На нём нужно было рассказать о себе. Я, конечно, волновался, потому что не очень понимал, что рассказать о себе. Но, послушав остальных, сумел кое-как рассказать о своем опыте и навыках. Команда подобралась разношерстная.
Второй созвон оказался интереснее и был посвящён обсуждению начала работы над проектом. Знания некоторых коллег впечатляют, но не могу сказать, чтобы я в целом в чём-то отставал, хотя теперь стало понятно, что в своем стеке надо подтянуть: работу с кастомной моделью пользователя и токенами аутентификации.
В самом начале определился лид команды - самый активный участник группы.
Сейчас, пока продакты исследуют рынок, а проджекты с аналитиками готовят документацию, перед нами стоит задача развернуть проект в репозитории и сделать базовую регистрацию, авторизацию и сброс пароля.
Определились с задачами:
- Организовать "основу" проекта и правила работы в репозитории.
- Сделать авторизацию и регистрацию с использованием Django REST Framework и JSON Web Token.
- Реализовать сброс пароля зарегистрированного пользователя.
Первую задачу взял на себя наш лид. После того, как он всё сделает, а мы это изучим, созвонимся снова и распределим оставшиеся задачи.
На удивление, мне есть, что предложить проекту, а именно у меня есть небольшой опыт работы с JWT аутентификацией между Django и Vue. Конечно, тут всё серьёзнее, чем на моём lkeep.ru, но, тем не менее, я не "хлопаю глазами" и не задаюсь вопросом "а как?".
В общем, наконец-то началось "движение". Очень интересно, в каком направлении пойдёт проект после исследования, какие задачи придётся выполнять и как будет выглядеть процесс взаимодействия с командой.
Пост на сайте
Поддержать проект
#Django #Стажировка #LAD_Academy #Backend #Код_на_салфетке #Frontend #Project #Product #Analytic #Vue
🔥8
Что выведет код выше?
Anonymous Quiz
12%
Всего 5 конфет.
45%
Всего 6 конфет.
15%
UnboundLocalError
28%
Ничего из перечисленного выше.
🔥1
Вчера мы опубликовали первую задачу из рубрики «Полезное из мешка». Задача скорее требовала внимательности, а не специальных знаний.
Общее количество ответов на данный момент 43, из них верных 11, а если вычесть 4-х человек, которые точно знали ответ на задачу, то правильных остаётся всего 7 ответов. Это даже меньше, чем если бы каждый отвечавший выбирал ответ случайным образом :(
Код из задачи:
Объяснение задачи:
В переменную
Функция
Функция
Хитрость в том, что функция
либо в этой:
Как вам новая рубрика? Стоит продолжать?
#что_выведет_данный_код #задачи_на_салфетке #python #функции #полезное_из_мешка
Общее количество ответов на данный момент 43, из них верных 11, а если вычесть 4-х человек, которые точно знали ответ на задачу, то правильных остаётся всего 7 ответов. Это даже меньше, чем если бы каждый отвечавший выбирал ответ случайным образом :(
Код из задачи:
def get_candy():
candy = 5
def increment_candy():
nonlocal candy
candy += 1
return candy
return increment_candy
result = get_candy()
print('Всего {} конфет.'.format(result))
Объяснение задачи:
В переменную
result мы помещаем результат вызова функции get_candy.Функция
get_candy: в ней мы объявляем переменную candy и записываем в неё пять конфет. Далее в ней же создается внутренняя функция increment_candy.Функция
increment_candy: в ней мы объявляем переменную candy нелокальной: то есть работая с этой переменной далее, мы будем обращаться к переменной из внешней функции get_candy - той самой, куда мы записали 5 конфет. Далее мы увеличиваем число конфет в этой переменной на единицу и возвращаем ее значение 6.Хитрость в том, что функция
get_candy (внешняя) не возвращает результат работы функции increment_candy (внутренней). Она лишь возвращает саму эту внутреннюю функцию, не вызывая ее. Чтобы вернуть именно результат ее работы, нужно вызвать эту внутреннюю фунцию, добавив скобки либо в этой строке:return increment_candy()
либо в этой:
result = get_candy()()
Как вам новая рубрика? Стоит продолжать?
#что_выведет_данный_код #задачи_на_салфетке #python #функции #полезное_из_мешка
🔥12
Статистика сайта за месяц 03.11-04.12
Автор: Иван Ашихмин
Прошёл ещё месяц и пора изучать статистику.
Растёт доля переходов из поиска. Основными поисковыми запросами по-прежнему являются AIOgram и FreeGPT, а в этом месяце к ним присоединились ещё и запросы про Docker (в основном MailServer) и стажировку в Aston. Удивительно, что на сайте столько постов про Django, а его в запросах почти нет.
Переходы из Telegram, Dzen и прямые заходы практически сравнялись.
В целом меня радует рост поисковой выдачи, но над SEO ещё работать и работать.
К слову, если кто-то из вас разбирается в SEO-оптимизации и сможет подсказать по основным моментам, как и что, буду благодарен 🙂.
В сухом итоге:
- Посетители: Было 500, стало 785. Прирост 57%.
- Переходы из Dzen: Было 12.6%, стало 13.1%. Прирост 3.96%.
- Переходы из Telegram-канала: Было 18%, стало 11.6%. Падение 35.55%.
- Переходы из поиска: Было 48.1%, стало 58.3%. Прирост 21.20%.
Автор: Иван Ашихмин
Прошёл ещё месяц и пора изучать статистику.
Растёт доля переходов из поиска. Основными поисковыми запросами по-прежнему являются AIOgram и FreeGPT, а в этом месяце к ним присоединились ещё и запросы про Docker (в основном MailServer) и стажировку в Aston. Удивительно, что на сайте столько постов про Django, а его в запросах почти нет.
Переходы из Telegram, Dzen и прямые заходы практически сравнялись.
В целом меня радует рост поисковой выдачи, но над SEO ещё работать и работать.
К слову, если кто-то из вас разбирается в SEO-оптимизации и сможет подсказать по основным моментам, как и что, буду благодарен 🙂.
В сухом итоге:
- Посетители: Было 500, стало 785. Прирост 57%.
- Переходы из Dzen: Было 12.6%, стало 13.1%. Прирост 3.96%.
- Переходы из Telegram-канала: Было 18%, стало 11.6%. Падение 35.55%.
- Переходы из поиска: Было 48.1%, стало 58.3%. Прирост 21.20%.
Релиз Django 5.0
Автор: Иван Ашихмин
Приветствую.
4 декабря, Django Team представили релиз фреймворка Django 5.0.
Примечания к выпуску подробно охватывают все изменения и новые функции, но вот несколько ключевых моментов:
- Значения по умолчанию, вычисляемые базой данных, позволяют определять значения по умолчанию, вычисляемые базой данных, для полей модели.
- Продолжая тенденцию расширения Django ORM, сгенерированное поле модели, позволяет создавать столбцы, сгенерированные базой данных.
- В шаблонную систему была добавлена концепция группы полей для упрощения отображения полей формы.
Список изменений Django 5.0 на русском языке
Установить Django 5.0 можно из PyPi или используя pip:
Автор: Иван Ашихмин
Приветствую.
4 декабря, Django Team представили релиз фреймворка Django 5.0.
Примечания к выпуску подробно охватывают все изменения и новые функции, но вот несколько ключевых моментов:
- Значения по умолчанию, вычисляемые базой данных, позволяют определять значения по умолчанию, вычисляемые базой данных, для полей модели.
- Продолжая тенденцию расширения Django ORM, сгенерированное поле модели, позволяет создавать столбцы, сгенерированные базой данных.
- В шаблонную систему была добавлена концепция группы полей для упрощения отображения полей формы.
Список изменений Django 5.0 на русском языке
Установить Django 5.0 можно из PyPi или используя pip:
pip install Django5.0
🔥3
Обратите внимание! При обновлении существующего проекта на более ранних версиях Django, удостоверьтесь, что используемые вами сторонние библиотеки поддерживают актуальную версию.
С выпуском Django 5.0 поддержка Django 4.2 завершена. Последний минорный релиз с исправлением ошибок, 4.2.8, был выпущен сегодня. Django 4.2 является версией с долгосрочной поддержкой (LTS) и будет получать исправления по безопасности и устранение потери данных до апреля 2026 года. Всем пользователям рекомендуется обновиться до этой даты, чтобы продолжать получать исправления для проблем безопасности.
Django 4.1 завершил свой период дополнительной поддержки. Последний релиз с исправлением безопасности (4.1.13) был выпущен 1 ноября. Всех пользователей Django 4.1 настоятельно рекомендуется обновиться до версии Django 4.2 или более поздней.
Пост на сайте
Поддержать проект
#Django #список_изменений #Новости #Django_5 #Django_4 #новая_версия #релиз
С выпуском Django 5.0 поддержка Django 4.2 завершена. Последний минорный релиз с исправлением ошибок, 4.2.8, был выпущен сегодня. Django 4.2 является версией с долгосрочной поддержкой (LTS) и будет получать исправления по безопасности и устранение потери данных до апреля 2026 года. Всем пользователям рекомендуется обновиться до этой даты, чтобы продолжать получать исправления для проблем безопасности.
Django 4.1 завершил свой период дополнительной поддержки. Последний релиз с исправлением безопасности (4.1.13) был выпущен 1 ноября. Всех пользователей Django 4.1 настоятельно рекомендуется обновиться до версии Django 4.2 или более поздней.
Пост на сайте
Поддержать проект
#Django #список_изменений #Новости #Django_5 #Django_4 #новая_версия #релиз
🔥3
Какой метод используется для сравнения двух объектов в Python, учитывая как их значения, так и их типы?
Anonymous Quiz
35%
equals()
19%
compare()
41%
__eq__()
5%
is_same()
В ближайшее время в рамках рубрики «Код в мешке» у нас выйдет пост о декораторах. А какую тему о Python вы бы хотели разобрать следом?
Anonymous Poll
9%
Области видимости
7%
Изменяемость/неизменяемость типов данных ч. 2
37%
Основы ООП ч. 1
33%
Сборщик мусора
14%
Хэшируемость объектов
0%
Напишу свой вариант в комментариях
🤔4🔥2
Оглавление для серии постов рубрики "Вести с полей стажировки".
Для удобства навигации по предстоящим материалам, в данном посте будут публиковаться ссылки на сообщения.
Тестовое задание для стажировки
Прошёл отбор на стажировку
Вести с полей стажировки
Начало работ
Второй месяц стажировки в LAD Academy
Первый фриланс проект - школа паралимпийского резерва
#стажировка #путь_в_it #оглавление
Для удобства навигации по предстоящим материалам, в данном посте будут публиковаться ссылки на сообщения.
Тестовое задание для стажировки
Прошёл отбор на стажировку
Вести с полей стажировки
Начало работ
Второй месяц стажировки в LAD Academy
Первый фриланс проект - школа паралимпийского резерва
#стажировка #путь_в_it #оглавление
🔥3