Первый раз делал функционал по загрузке данных из файла для пользователей на сайте.
Оказалось не такой простой задачей.
Пришлось отказаться от модального окна, которое вчера сделал.
Реализовал через отдельную страницу.
Как всегда помогла документация: https://docs.djangoproject.com/en/4.0/topics/http/file-uploads/
Думаю, что немного позже смогу сделать через модальное окно.
Сейчас понимаю какие ошибки там допустил.
Результат: все работает!
Теперь пользователь может загрузить данные из CSV файла в CRM. =)
Оказалось не такой простой задачей.
Пришлось отказаться от модального окна, которое вчера сделал.
Реализовал через отдельную страницу.
Как всегда помогла документация: https://docs.djangoproject.com/en/4.0/topics/http/file-uploads/
Думаю, что немного позже смогу сделать через модальное окно.
Сейчас понимаю какие ошибки там допустил.
Результат: все работает!
Теперь пользователь может загрузить данные из CSV файла в CRM. =)
🔥3👍1
Прошел совсем крошечный обзорный мини-курс на hexlet "Python для продвинутых".
Повторил:
- обработку исключений
- тестирование
Узнал о возможностях функционального программирования на Python:
- чистые функции
- неизменяемые данные
- функции высшего порядка
- генераторы списков
- анонимные функции (lambda функции)
- замыкание
Тема чистых функций показалась очень интересной. Думаю следует ее изучить и применять в практике.
Повторил:
- обработку исключений
- тестирование
Узнал о возможностях функционального программирования на Python:
- чистые функции
- неизменяемые данные
- функции высшего порядка
- генераторы списков
- анонимные функции (lambda функции)
- замыкание
Тема чистых функций показалась очень интересной. Думаю следует ее изучить и применять в практике.
👍3
Интересная статистика)
Последние 30 дней я отправляю свой код на GitHub.
Без выходных.😅
За 2022 год я отправил 470 коммитов) И это только учебные проекты)
Аккаунт завел 15 августа прошлого года.
ссылка на мой аккаунт: https://github.com/avagners
Подписывайтесь)
Последние 30 дней я отправляю свой код на GitHub.
Без выходных.😅
За 2022 год я отправил 470 коммитов) И это только учебные проекты)
Аккаунт завел 15 августа прошлого года.
ссылка на мой аккаунт: https://github.com/avagners
Подписывайтесь)
🔥3
Добавил пагинацию для Products и Orders.
Столкнулся с проблемой некорректного порядкового номера.
При переходе на вторую страницу, порядковый номер начинался заново.
А должен продолжаться.
Один запрос в гугл и вот решение:
https://stackoverflow.com/questions/9373532/how-to-show-the-correct-object-numbers-when-using-django-pagination
Столкнулся с проблемой некорректного порядкового номера.
При переходе на вторую страницу, порядковый номер начинался заново.
А должен продолжаться.
Один запрос в гугл и вот решение:
https://stackoverflow.com/questions/9373532/how-to-show-the-correct-object-numbers-when-using-django-pagination
Stack Overflow
How to show the correct object numbers when using django-pagination
I am using django-pagination to paginate my object list. It is working flawlessly. I want to give a number to each object on the page and I am using {{forloop.counter}} for that, but the problem is...
👍3
ptpython
Интерактивная оболочка Python с подсветкой синтаксиса, автоматическими отступами, подсказками кода, многострочным редактированием.
https://github.com/prompt-toolkit/ptpython
То чувство, когда заменил кнопочный телефон на современный смартфон)))
Интерактивная оболочка Python с подсветкой синтаксиса, автоматическими отступами, подсказками кода, многострочным редактированием.
https://github.com/prompt-toolkit/ptpython
То чувство, когда заменил кнопочный телефон на современный смартфон)))
👍2🔥1
Генератор статических сайтов.
О генераторах статических сайтов узнал лет 5 назад, когда интересовался веб-разработкой.
В то время они мне казались чем-то очень сложным и непонятным.
Тогда сделал 1 сайт на генераторе jekyll. При этом магию преобразования md файлов в html страницы я так и не понял.
После этого, осенью прошлого года, сделал себе сайт с помощью генератора hugo. Он написан на go. Мне кажется, порог входа у него самый низкий. Поэтому, если хотите начать вести блог, то рекомендую данный генератор.
Несколько недель назад вновь задумался о том, чтобы разобраться как устроены эти генераторы.
Подумал: "Почему бы не сделать такой генератор самому на python?"
И вот сегодня выкладываю первую рабочую версию на github. =)
https://github.com/avagners/ssgpy
О генераторах статических сайтов узнал лет 5 назад, когда интересовался веб-разработкой.
В то время они мне казались чем-то очень сложным и непонятным.
Тогда сделал 1 сайт на генераторе jekyll. При этом магию преобразования md файлов в html страницы я так и не понял.
После этого, осенью прошлого года, сделал себе сайт с помощью генератора hugo. Он написан на go. Мне кажется, порог входа у него самый низкий. Поэтому, если хотите начать вести блог, то рекомендую данный генератор.
Несколько недель назад вновь задумался о том, чтобы разобраться как устроены эти генераторы.
Подумал: "Почему бы не сделать такой генератор самому на python?"
И вот сегодня выкладываю первую рабочую версию на github. =)
https://github.com/avagners/ssgpy
GitHub
GitHub - avagners/ssgpy: Static Site Generator
Static Site Generator. Contribute to avagners/ssgpy development by creating an account on GitHub.
👍2🔥1
На прошлой неделе было несколько дней выходных. Я совсем ничего не изучал и не кодил.
И как всегда, когда пропускаешь несколько дней подряд, то происходит значительный спад в продуктивности.
В том числе по этой причине не писал ничего в канал.
Сегодня среда. Вернул английский. Ничего нового в CRM не реализовал. Книжек не читал.
Из плюсов за это время:
- вписался в проект сокурсника. Он хочет написать онлайн ассистента для постановки задач с интеграцией телеграм и GitHub.
Уже сделал несколько коммитов.
- придумал ещё 3 прикладных проекта, которые могут помочь в моей повседневной жизни. Надо создать 3 репозитория для них на GitHub и в README.md написать описание. Тогда есть шанс что я про них не забуду и смогу выделить время для их реализации.
На днях детально распишу о каждом из них в канале.
- начал изучать структуры данных. Изучил связанные списки, стек. Для понимания пришлось руками прописывать каждую структуру. Вопрос даётся не просто. Задачи решаются долго. Но главное, что решаются и приходит понимание.
И как всегда, когда пропускаешь несколько дней подряд, то происходит значительный спад в продуктивности.
В том числе по этой причине не писал ничего в канал.
Сегодня среда. Вернул английский. Ничего нового в CRM не реализовал. Книжек не читал.
Из плюсов за это время:
- вписался в проект сокурсника. Он хочет написать онлайн ассистента для постановки задач с интеграцией телеграм и GitHub.
Уже сделал несколько коммитов.
- придумал ещё 3 прикладных проекта, которые могут помочь в моей повседневной жизни. Надо создать 3 репозитория для них на GitHub и в README.md написать описание. Тогда есть шанс что я про них не забуду и смогу выделить время для их реализации.
На днях детально распишу о каждом из них в канале.
- начал изучать структуры данных. Изучил связанные списки, стек. Для понимания пришлось руками прописывать каждую структуру. Вопрос даётся не просто. Задачи решаются долго. Но главное, что решаются и приходит понимание.
👍4
Сегодня:
- решал алгоритмические задачи;
- читал "Грокаем алгоритмы". Повторил ранее изученные темы: О-большое, бинарный поиск, массивы и связанные списки;
- CRM: на странице входа добавил ссылку на страницу регистрации, сделал доступ только для авторизованного пользователя;
- английский язык;
=)
- решал алгоритмические задачи;
- читал "Грокаем алгоритмы". Повторил ранее изученные темы: О-большое, бинарный поиск, массивы и связанные списки;
- CRM: на странице входа добавил ссылку на страницу регистрации, сделал доступ только для авторизованного пользователя;
- английский язык;
=)
👍4
"Если вам нравится рекурсия или вы хотите изучить новый язык - присмотритесь к Haskell."
Цитата из книги "Грокаем алгоритмы".
С рекурсией вроде разобрался. Второй язык планирую начать изучать в июне-июле.
Какой язык пока не решил.
Цитата из книги "Грокаем алгоритмы".
С рекурсией вроде разобрался. Второй язык планирую начать изучать в июне-июле.
Какой язык пока не решил.
🔥2
Сегодня:
- "Грокаем алгоритмы": стек, рекурсия;
- CRM: 2 недели назад поставил задачу реализовать возможность сортировки при нажатии на заголовок столбца. Не знал как это сделать, поэтому затянул с решением. Сегодня сделал. Мне кажется есть более правильное решение. Завтра посмотрю как это можно сделать с помощью django-filters;
- английский;
Нашел интерактивный роадмап backend разработчика. Довольно интересный ресурс. Думаю буду регулярно заглядывать.
Прочитал статью про историю создания интернета и его базовое устройство.
Ссылка на роадмап: https://roadmap.sh/backend
P.s. там есть не только backend.
- "Грокаем алгоритмы": стек, рекурсия;
- CRM: 2 недели назад поставил задачу реализовать возможность сортировки при нажатии на заголовок столбца. Не знал как это сделать, поэтому затянул с решением. Сегодня сделал. Мне кажется есть более правильное решение. Завтра посмотрю как это можно сделать с помощью django-filters;
- английский;
Нашел интерактивный роадмап backend разработчика. Довольно интересный ресурс. Думаю буду регулярно заглядывать.
Прочитал статью про историю создания интернета и его базовое устройство.
Ссылка на роадмап: https://roadmap.sh/backend
P.s. там есть не только backend.
roadmap.sh
Backend Developer Roadmap: What is Backend Development
Step by step guide to becoming a modern backend developer in 2025
👍3
1) Решал задачи по алгоритмам и структурам данных.
Первая задача: реализовать структуру данных "Дек". Дек - это очередь с возможностью добавления и извлечения элементов и в начало и в конец очереди. Требование задачи: использование кольцевого буфера.
Кольцевой буфер, или циклический буфер - это буфер фиксированного размера, в котором оба указателя указывают на ячейку с индексом ноль, если очередь пуста. Таким образом массив зациклен.
На решение задачи ушло порядка 5 часов. Зато здорово разобрался как работать с указателями и довольно хорошо понял эту структуру данных.
Вторая задача: реализовать польский калькулятор с использованием стека.
Описание задачи было довольно большим. Думал задача будет сложнее предыдущей. Но по факту оказалась намного проще.
Решил за 90 мин.
2) Создал новый репозиторий на github, в котором буду публиковать свой опыт в освоении алгоритмов и структур данных. Возможно, буду публиковать решения алгоритмических задач с LeetCode, CodeWars, HackerRank
3) Немного изучил аннотацию типов в Python. Почитал, написал код. Проверил как подсвечивается код в vscode и в PyCharm.
В PyCharm все настроено по-умолчанию. Сразу подсвечиваются переменные, в которых есть ошибка.
В vscode нужно произвести дополнительную настройку. Например, выбрать mypy в качестве линтера.
С аннотацией типов первый раз познакомился примерно пол года назад. Тогда не понял всю важность применения в работе, так как код также хорошо работает и без аннотации типов.
Сейчас убежден, что это обязательное требование в написании кода на питоне.
Первая задача: реализовать структуру данных "Дек". Дек - это очередь с возможностью добавления и извлечения элементов и в начало и в конец очереди. Требование задачи: использование кольцевого буфера.
Кольцевой буфер, или циклический буфер - это буфер фиксированного размера, в котором оба указателя указывают на ячейку с индексом ноль, если очередь пуста. Таким образом массив зациклен.
На решение задачи ушло порядка 5 часов. Зато здорово разобрался как работать с указателями и довольно хорошо понял эту структуру данных.
Вторая задача: реализовать польский калькулятор с использованием стека.
Описание задачи было довольно большим. Думал задача будет сложнее предыдущей. Но по факту оказалась намного проще.
Решил за 90 мин.
2) Создал новый репозиторий на github, в котором буду публиковать свой опыт в освоении алгоритмов и структур данных. Возможно, буду публиковать решения алгоритмических задач с LeetCode, CodeWars, HackerRank
3) Немного изучил аннотацию типов в Python. Почитал, написал код. Проверил как подсвечивается код в vscode и в PyCharm.
В PyCharm все настроено по-умолчанию. Сразу подсвечиваются переменные, в которых есть ошибка.
В vscode нужно произвести дополнительную настройку. Например, выбрать mypy в качестве линтера.
С аннотацией типов первый раз познакомился примерно пол года назад. Тогда не понял всю важность применения в работе, так как код также хорошо работает и без аннотации типов.
Сейчас убежден, что это обязательное требование в написании кода на питоне.
🔥4👍1
Что делал?
1) CRM
- создал карточку клиента;
- на странице карточки клиента вывел историю заказов;
- добавил поле "статус" для клиента: активный/неактивный. Добавил в модель, вывел в шаблон, в форму редактирования;
- добавил вывод ошибок в форме, если форма не проходит валидацию;
Получилось довольно неплохо. Скрин карточки ниже.
2) Алгоритмы и структуры данных. Продолжаю чтение книги "Грокаем алгоритмы". Постепенно переношу написанные мной алгоритмы на github.
3) Начал знакомиться с ассемблер.
Для инфо
Ассемблер - низкоуровневый язык второго уровня. Почему второго? На первом уровне машинный код, на втором - ассемблер. Ну а все остальные языки уже выше. В этом языке ты взаимодействуешь с железом напрямую. Работаешь непосредственно с инструкциями процессора.
На данном языке уже почти никто ничего не пишет. Остались очень узкоспециализированные ниши.
Зачем он мне?
Хочу достаточно уверенно понимать что происходит на уровне железа. Говорят, что потом лучше понимаешь высокоуровневые языки.
Хочу через пару месяцев (а может и раньше) переписать пару алгоритмов на ассемблер =).
1) CRM
- создал карточку клиента;
- на странице карточки клиента вывел историю заказов;
- добавил поле "статус" для клиента: активный/неактивный. Добавил в модель, вывел в шаблон, в форму редактирования;
- добавил вывод ошибок в форме, если форма не проходит валидацию;
Получилось довольно неплохо. Скрин карточки ниже.
2) Алгоритмы и структуры данных. Продолжаю чтение книги "Грокаем алгоритмы". Постепенно переношу написанные мной алгоритмы на github.
3) Начал знакомиться с ассемблер.
Для инфо
Ассемблер - низкоуровневый язык второго уровня. Почему второго? На первом уровне машинный код, на втором - ассемблер. Ну а все остальные языки уже выше. В этом языке ты взаимодействуешь с железом напрямую. Работаешь непосредственно с инструкциями процессора.
На данном языке уже почти никто ничего не пишет. Остались очень узкоспециализированные ниши.
Зачем он мне?
Хочу достаточно уверенно понимать что происходит на уровне железа. Говорят, что потом лучше понимаешь высокоуровневые языки.
Хочу через пару месяцев (а может и раньше) переписать пару алгоритмов на ассемблер =).
👍3🔥1
1) CRM - начал покрывать код тестами. Покрыл пока только URL в приложении Customers.
По итогам работы выявил баг с правами доступа. Оказался доступным адрес создания нового клиента для неавторизованного пользователя. =)
Исправил ошибку.
Вот чем полезно написание тестов =)
2) Ассемблер. Познакомился с основными регистрами процессора:
- регистры общего назначения (4 байта = 32 бита);
- регистр флагов (4 байта = 32 бита);
- сегментные регистры (2 байта = 16 бит);
Регистры общего назначения состоят из старшего слова и младшего слова.
У некоторых регистров младшее слово делится на старший байт и младший байт.
3) Чтение книги "Грокаем алгоритмы". Познакомился с жадными алгоритмами и NP-полными задачами.
По итогам работы выявил баг с правами доступа. Оказался доступным адрес создания нового клиента для неавторизованного пользователя. =)
Исправил ошибку.
Вот чем полезно написание тестов =)
2) Ассемблер. Познакомился с основными регистрами процессора:
- регистры общего назначения (4 байта = 32 бита);
- регистр флагов (4 байта = 32 бита);
- сегментные регистры (2 байта = 16 бит);
Регистры общего назначения состоят из старшего слова и младшего слова.
У некоторых регистров младшее слово делится на старший байт и младший байт.
3) Чтение книги "Грокаем алгоритмы". Познакомился с жадными алгоритмами и NP-полными задачами.
👍5