Skip to content

ADV90/ITVDN

Repository files navigation

ITVDN / CyberBionic Systematics


  1. Python Starter

  2. Python Essential

  3. Python Advanced 2022

  4. Django

Python Starter

1. Введение в Python

Задание 1

Установите Python и PyCharm (или другую IDE с поддержкой Python, которая вам удобна). Исследуйте настройки, настройте среду разработки для себя: подберите цветовую схему и шрифт редактора, которые вам нравятся, включите или отключите отображение номеров строк, подсветку текущей строки, отображение разделителей между участками кода и т.п.

Задание 2

Создайте скрипт на языке Python, используя обычный текстовый редактор (можно использовать редактор кода, такой как, например, Sublime Text). Запустите его при помощи консоли. Запустите его двойным щелчком в проводнике Windows. Придумайте, как, используя то, что вы уже выучили, сделать так, чтобы окно консоли не закрывалось сразу же после запуска скрипта двойным щелчком.

Задание 3

Откройте IDLE (под Windows и OS X это приложение устанавливается вместе с Python). Поэкспериментируйте с обычными арифметическими выражениями. Попробуйте задать имя значению какого-либо выражения. Попробуйте вывести значение выражения с поясняющим текстом при помощи функции print, используя как имена, так и непосредственно выражения в качестве параметров функции.

Задание 4

Создайте новый проект в интегрированной среде разработки PyCharm. Создайте файл исходного кода и напишите программу, которая выводит ваше имя. Запустите его. Создайте второй файл с кодом и напишите программу, которая спрашивает у пользователя, как его зовут, и здоровается с ним. Запустите его. Переключитесь на первый скрипт и запустите его. Переключитесь обратно на второй скрипт.

2. Переменные и типы данных

Задание 1

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

Задание 2

Напишите программу, которая запрашивает три целых числа a, b и x и выводит True, если x лежит между a и b, иначе – False.

Задание 3

Напишите программу, которая решает квадратное уравнение ax^2 + bx + c = 0 по формулам x1,2 = (-b ± √(b^2-4ac)) / 2a. Значения a, b и c вводятся с клавиатуры. Для извлечения корня используйте оператор возведения в степень, а не функцию math.sqrt, чтобы получить комплексные числа в случае, если подкоренное выражение отрицательно.

Задание 4

Напишите программу, которая запрашивает у пользователя радиус круга и выводит его площадь. Формула площади круга S = πr^2

3. Условные конструкции

Задание 1

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

Задание 2

Напишите программу, которая вычисляет значение функции в диапазоне значений x от -10 до 10 включительно с шагом, равным 1.

y = x^2 при -5 <= x <= 5; y = 2*|x|-1 при x < -5; y = 2x при x > 5. Вычисление значения функции оформить в виде программной функции, которая принимает значение x, а возвращает полученное значение функции (y).

Задание 3

Напишите программу, которая решает квадратное уравнение ax^2 + bx + c = 0 в действительных числах. В отличие от аналогичного упражнения из прошлого урока, программа должна выдавать сообщение об отсутствии действительных корней, если значение дискриминанта D = b^2-4ac отрицательно, единственное решение x = -b/2a если он равен нулю, или два корня x1,2 = (-b ± √D) / 2a, если он положителен.

Задание 4

Напишите программу-калькулятор, в которой пользователь сможет ввести выбрать операцию, ввести необходимые числа и получить результат. Операции, которые необходимо реализовать: сложение, вычитание, умножение, деление, возведение в степень, синус, косинус и тангенс числа.

4. Циклические конструкции

Задание 1

Даны числа a и b (a < b). Выведите сумму всех натуральных чисел от a до b (включительно).

Задание 2

Факториалом числа n называется число 𝑛! = 1 ∙ 2 ∙ 3 ∙ … ∙ 𝑛. Создайте программу, которая вычисляет факториал введённого пользователем числа.

Задание 3

Используя вложенные циклы и функции print(‘*’, end=’’), print(‘ ‘, end=’’) и print() выведите на экран прямоугольный треугольник.

Задание 4

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

5. Функции (часть 1)

Задание 1

Создайте функцию, которая выводит приветствие для пользователя с заданным именем. Если имя не указано, она должна выводить приветствие для пользователя с Вашим именем.

Задание 2

Создайте две функции, вычисляющие значения определённых алгебраических выражений. Выведите на экран таблицу значений этих функций от -5 до 5 с шагом 0.5.

Задание 3

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

Задание 4

Создайте программу, которая состоит из функции, которая принимает три числа и возвращает их среднее арифметическое, и главного цикла, спрашивающего у пользователя числа и вычисляющего их средние значения при помощи созданной функции.

6. Функции (часть 2)

Задание 1

Прочитайте в документации по языку Python информацию о перечисленных в резюме данного урока стандартных функциях. Проверьте их на практике.

Задание 2

Создайте программу, которая проверяет, является ли палиндромом введённая фраза.

Задание 3

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

Задание 4

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

7. Списки

Задание 1

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

Задание 2

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

Задание 3

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

Задание 4

Создайте список, введите количество его элементов и сами значения, выведите эти значения на экран в обратном порядке.

8. Спецификация PEP8

Откройте файл fix_me.py из папки homework. Используя обычный текстовый редактор (Notepad), исправьте все ошибки оформления кода согласно PEP 8.


Python Essential

1. ООП - Классы, атрибуты, методы, конструктор

Задание 1

Создайте класс, описывающий книгу. Он должен содержать информацию об авторе, названии, годе издания и жанре. Создайте несколько разных книг. Определите для него операции проверки на равенство и неравенство, методы repr и str.

Задание 2

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

Задание 3

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

Задание 4

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

2. ООП - Наследование

Задание 1

Создайте класс Editor, который содержит методы view_document и edit_document. Пусть метод edit_document выводит на экран информацию о том, что редактирование документов недоступно для бесплатной версии. Создайте подкласс ProEditor, в котором данный метод будет переопределён. Введите с клавиатуры лицензионный ключ и, если он корректный, создайте экземпляр класса ProEditor, иначе Editor. Вызовите методы просмотра и редактирования документов.

Задание 2

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

Задание 3

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

Задание 4

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

3. ООП – Инкапсуляция и полиморфизм

Задание 1

Создайте класс, описывающий автомобиль. Какие атрибуты и методы должны быть полностью инкапсулированы? Доступ к таким атрибутам и изменение данных реализуйте через специальные методы (get, set).

Задание 2

Создайте 2 класса – языка, например, английский и испанский. У обоих классов должен быть метод greeting(). Оба создают разные приветствия. Создайте два соответствующих объекта из двух классов выше и вызовите действия этих двух объектов в одной функции (функция hello_friend).

Задание 3

Используя ссылки в конце данного урока, ознакомьтесь с таким средством инкапсуляции как свойства. Ознакомьтесь с декоратором property в Python. Создайте класс, описывающий температуру и позволяющий задавать и получать температуру по шкале Цельсия и Фаренгейта, причём данные могут быть заданы в одной шкале, а получены в другой.

Задание 4

Опишите два класса Base и его наследника Child с методами method(), который выводит на консоль фразы соответственно "Hello from Base" и "Hello from Child".

4. Исключения и оператор assert

Задание 1

Выучите основные стандартные исключения, которые перечислены в данном уроке.

Задание 2

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

Задание 3

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

Задание 4

Опишите свой класс исключения. Напишите функцию, которая будет выбрасывать данное исключение, если пользователь введёт определённое значение, и перехватите это исключение при вызове функции.

5. Итераторы

Задание 1

Реализуйте цикл, который будет перебирать все значения итерабельного объекта iterable.

Задание 2

Взяв за основу код примера example_5.py, расширьте функциональность класса MyList, добавив методы для очистки списка, добавления элемента в произвольное место списка, удаления элемента из конца и произвольного места списка.

Задание 3

Напишите итератор, который возвращает элементы заданного списка в обратном порядке (аналог reversed).

6. Генераторы

Задание 1

Напишите генератор, который возвращает элементы заданного списка в обратном порядке (аналог reversed).

Задание 2

Выведите из списка чисел список квадратов четных чисел. Используйте 2 варианта решения: генератор и цикл.

Задание 3

Напишите функцию-генератор для получения n первых простых чисел.

7. Последовательности (list, tuple)

Задание 1

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

Задание 2

Используя документацию, ознакомьтесь с методами класса str.

Задание 3

Напишите программу, которая вводит с клавиатуры текст и выводит отсортированные по алфавиту слова данного текста.

Задание 4

Ознакомьтесь при помощи документации с классами namedtuple и deque модуля collections.

Задание 5

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

8. Множества и отображения (set, dict)

Задание 1

Даны две строки. Выведите на экран символы, которые есть в обоих строках.

Задание 2

Создайте программу, которая эмулирует работу сервиса по сокращению ссылок. Должна быть реализована возможность ввода изначальной ссылки и короткого названия и получения изначальной ссылки по её названию.

Задание 3

Ознакомьтесь при помощи документации с классами OrderedDict, defaultdict и ChainMap модуля collections.

Задание 4

Создайте словарь с ключами-строками и значениями-числами. Создайте функцию, которая принимает произвольное количество именованных параметров. Вызовите её с созданным словарём и явно указывая параметры.

9. Работа с файлами

Задание 1

Напишите скрипт, который создаёт текстовый файл и записывает в него 10000 случайных действительных чисел. Создайте ещё один скрипт, который читает числа из файла и выводит на экран их сумму.

Задание 2

Модифицируйте исходный код сервиса по сокращению ссылок из предыдущих двух уроков так, чтобы он сохранял базу ссылок на диске и не «забывал» при перезапуске. При желании можете ознакомиться с модулем shelve (https://docs.python.org/3/library/shelve.html), который в данном случае будет весьма удобен и упростит выполнение задания.

Задание 3

Создайте список товаров в интернет-магазине. Сериализуйте его при помощи pickle и сохраните в JSON.

10. Модули и пакеты

Задание 1

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

Задание 2

Повторите информацию о рассмотренных на уроке стандартных модулях. Ознакомьтесь также с модулями calendar, heapq, bisect, array, enum.

Задание 3

Создайте модуль для получения простых чисел. Импортируйте его из другого модуля. Импортируйте отдельные его имена.


Python Advanced 2022

1. Элементы функционального программирования

Задание 1

Ещё раз разберите все примеры к уроку, повторите теорию и ознакомьтесь с документацией по рассмотренным модулям.

Задание 2

Создайте список целых чисел. Получите список квадратов нечётных чисел из этого списка.

Задание 3

Создайте функцию-генератор чисел Фибоначчи. Примените к ней декоратор, который будет оставлять в последовательности только чётные числа.

2. Работа с сетью

Задание 1

Создайте UDP сервер, который ожидает сообщения о новых устройствах в сети. Он принимает сообщения определенного формата, в котором будет идентификатор устройства и печатает новые подключения в консоль. Создайте UDP клиента, который будет отправлять уникальный идентификатор устройства на сервер, уведомляя о своем присутствии.

Задание 2

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

Задание 3

Изучите более подробно и попробуйте возможности настройки, pull-а соединений и его режимов. Используя утилиту ab протестируйте ваши наработки (https://ru.wikipedia.org/wiki/ApacheBench).

Задание 4

Используя сервис https://jsonplaceholder.typicode.com/ попробуйте построить различные типы запросов и обработать ответы. Необходимо попрактиковаться с urllib и библиотекой requests. Рекомендуется сначала попробовать выполнить запросы, используя urllib, а затем попробовать реализовать то же самое используя requests

3. Хранилища данных

Задание 1

Создайте простые словари и сконвертируйте их в JSON. Сохраните JSON в файл и попробуйте загрузить данные из файла.

Задание 2

Создайте XML файл с вложенными элементами и воспользуйтесь языком поиска XPATH. Попробуйте осуществить поиск содержимого по созданному документу XML, усложняя свои запросы и добавляя новые элементы, если потребуется.

Задание 3

Поработайте с созданием собственных диалектов, произвольно выбирая правила для CSV файлов. Зарегистрируйте созданные диалекты и поработайте, используя их, с созданием/чтением файлом.

4. SQLite. Синтаксис и запросы

Задание 1

Сделать таблицу для подсчёта личных расходов со следующими полями: id, назначение, сумма, время.

Задание 2

Создать консольный интерфейс (CLI) на Python для добавления новых записей в базу данных

Задание 3

Создать агрегатные функции для подсчёта общего количества расходов и расходов за месяц. Обеспечить соответствующий интерфейс для пользователя.

Задание 4

Измените таблиц так, чтобы можно было добавить не только расходы, а и доходы

Задание 5

Замените назначение на MCC и используйте его для определения назначения платежа

Задание 6

Настройте интеграцию с API своего банка для автоматической загрузки операций по карте

5. Асинхронное программирование в Python

Задание 1

Создайте функцию по вычислению факториала числа. Запустите несколько задач, используя ThreadPoolExecutor и замерьте скорость их выполнения, а затем замерьте скорость вычисления, используя тот же самый набор задач на ProcessPoolExecutor. В качестве примеров, используйте крайние значения, начиная от минимальных и заканчивая максимально возможными, чтобы увидеть прирост или потерю производительности.

Задание 2

Создайте три функции, одна из которых читает файл на диске с заданным именем и проверяет наличие строку “Wow! ”. В случае, если файла нет, то засыпает на 5 секунд, а затем снова продолжает поиск по файлу. В случае, если файл есть, то открывает его и ищет строку “Wow!”. При наличии данной строки закрывает файл и генерирует событие, а другая функция ожидает данное событие и в случае его возникновения выполняет удаление этого файла. В случае если строки «Wow!» не было найдено в файле, то засыпать на 5 секунд. Создайте файл руками и проверьте выполнение программы.

Задание 3

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

6. Многопоточное программирование в Python

Задание 1

Создайте функцию по вычислению факториала числа. Запустите несколько задач, используя ThreadPoolExecutor и замерьте скорость их выполнения, а затем замерьте скорость вычисления, используя тот же самый набор задач на ProcessPoolExecutor. В качестве примеров, используйте крайние значения, начиная от минимальных и заканчивая максимально возможными, чтобы увидеть прирост или потерю производительности.

Задание 2

Создайте три функции, одна из которых читает файл на диске с заданным именем и проверяет наличие строку “Wow! ”. В случае, если файла нет, то засыпает на 5 секунд, а затем снова продолжает поиск по файлу. В случае, если файл есть, то открывает его и ищет строку “Wow!”. При наличии данной строки закрывает файл и генерирует событие, а другая функция ожидает данное событие и в случае его возникновения выполняет удаление этого файла. В случае если строки «Wow!» не было найдено в файле, то засыпать на 5 секунд. Создайте файл руками и проверьте выполнение программы.

7. Типизированный Python. Модульное тестирование

Задание 1

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

Django

1. Введение в Django

Задание 1

Запустить Django на порт 80, чтобы работала ссылка http://localhost/lesson_1/

Задание 2

Создать новое приложение lesson_11

Задание 3

По адресу http://localhost/lesson_1_1/ создать следующую HTML страницу:

<p>Hello World!</p>

<p>Django is one of the best framework on Python</p>
<hr>

Задание 4

Установить, настроить и запустить Django-сервер. Вывести простейшую HTML-страницу с надписью “Hello World!”

2. Маршрутизация. Запросы, ответы сервера

Задание 1

Составить urls.py файл, который:

  • направляет URL с home/' в метод views.home и задает имя для этого URL как ‘home-view'.
  • направляет URL с 'book/{название главы}/' в метод views. Book вместе с названием главы в качестве аргумента title, и задает имя для этого URL как ‘book'.
  • передает запросы, начинающиеся с ‘lesson_2/' в модуль ‘lesson_2.urls', вместе с остатком URL.

Задание 2

  • Написать пример регулярного выражения, которое совпадает сразу с тремя строками: "dog", "box", "bog".
  • Написать пример регулярного выражения, которое не совпадает сразу с тремя строками: "dog", "box", "bog", но совпадет с “cot”

Задание 3

Написать пример регулярного выражения, которое совпадает с "d", "dog", "dogog", но не совпадает с "dogogog".

Задание 4

  • Составить urls.py файл, который: o направляет URL с 'index/' в метод views.index и задает имя для этого URL как ‘index-view'. o направляет URL с 'bio/{имя пользователя}/' в метод views.bio вместе с именем пользователя в качестве аргумента username, и задает имя для этого URL как ‘bio'. o передает запросы, начинающиеся с ‘lesson_1/' в модуль ‘lesson_1.urls', вместе с остатком URL.
  • Написать пример регулярного выражения, которое совпадает сразу с тремя строками: "cat", "cbt", "ctt".
  • Написать пример регулярного выражения, которое не совпадает сразу с тремя строками: "cat", "cbt", "ctt".
  • Написать пример регулярного выражения, которое совпадает с "c", "cat", "catat" или "catatatatat".
  • Написать пример регулярного выражения, которое будет совпадать “c", "cat", но не будет совпадать целиком с "catat" или "catatatatat", а будет совпадать только с “cat” в них.

3. Шаблоны и представления

Задание 1

Дан следующий список: lets_do_it = [{'priority': 100, 'task': 'Составить список дел'}, {'priority': 150, 'task': 'Изучать Django'}, {'priority': 1, 'task': 'Подумать о смысле жизни'}] Вывести его в представлении.

Задание 2

Составить структуру сайта с помощью представлений так, чтобы у вас была главная страница с приветствием и ссылками на другие страницы сайта: Добро пожаловать во вселенную звездных войн! Выберите страницу: Люк Лея Хан Страница Люка: Люк Скайуокер — один из главных персонажей вселенной «Звёздных войн», джедай, сын сенатора с Набу Падме Амидалы Наберри и рыцаря-джедая Энакина Скайуокера Страница Леи: Лея Органа — дочь рыцаря-джедая Энакина Скайуокера и сенатора Падме Амидалы Наберри. Страница Хана: Хан. Соло — пилот космического корабля «Тысячелетний сокол», его бортмехаником и вторым пилотом является вуки по имени Чубакка.

Задание 3

Создать представление и свой HTTPResponse который бы отправлял пользователи файл с текстом «Вот ваш файл» и кодом 227.

Задание 4

Составить представления, которые будут использовать различные типы ответов: файл, json, html и текст, Реализовать несколько Function и Class Based Views.

Задание 5

Дан следующий список: lets_do_it = [{'priority': 100, 'task': 'Составить список дел'}, {'priority': 150, 'task': 'Изучать Django'}, {'priority': 1, 'task': 'Подумать о смысле жизни'}] Вывести его с помощью шаблона и фильтра в порядке убывания priority

Задание 6

Составить структуру сайта с помощью шаблонов так, чтобы у вас была главная страница с приветствием и ссылками на другие страницы сайта: Добро пожаловать во вселенную звездных войн! Выберите страницу: Люк Лея Хан и 3 страницы с общим заголовком «переход на главную», которые реализован с помощью одного общего шаблона, который они вместе наследуют, и уникальной для каждой страницы содержанием: страница Люка: Люк Скайуокер — один из главных персонажей вселенной «Звёздных войн», джедай, сын сенатора с Набу Падме Амидалы Наберри и рыцаря-джедая Энакина Скайуокера страница Леи: Лея Органа — дочь рыцаря-джедая Энакина Скайуокера и сенатора Падме Амидалы Наберри. страница Хана: Хан Соло — пилот космического корабля «Тысячелетний сокол», его бортмехаником и вторым пилотом является вуки по имени Чубакка.

Задание 7

Составить шаблон и использовать его в представлении, который бы отображал список словарей, хранящий информацию: [{'name': 'Шаддам IV', 'surname': 'Коррино'}, {'name': 'Пол', 'surname': 'Атрейдес'}, {'name': 'Франклин', 'surname': 'Герберт'}] с помощью тега for в виде списка:

<ol>
    <li>{name} {surname}</li>
</ol>

Задание 8

У нас есть список: latest_question_list = [{'id': 1, 'question_text': 'В чем смысл жизни?"}, {'id': 2, 'question_text': 'Что первично, дух или материя?"}, {'id': 3, 'question_text': 'Существует ли свобода воли?"}]

4. Модели

Задание 1

Изучить и понять все преимущества и недостатки инструментов, которые были рассмотрены на уроке.

Задание 2

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

Задание 3

Создать по 5 записей в базе данных для каждой модели.

Задание 4

Создать модели для интернет-магазина, которые будут отвечать следующим критериям:

  • Модель должна вмещать все перечисленные в уроке поля.
  • Добавить связь между моделями.
  • Все поля по умолчанию должны быть пустыми.
  • Добавить модели к как минимум 5 продуктам.

Задание 5

Создать несколько моделей и попробовать запустить миграции. Изменить модели и запустить миграции. Проделать этот процесс несколько раз и посмотреть, как будут изменяться таблицы в базе данных.

Задание 6

Попробовать подключить к проекту MongoDB и запустить миграции на эту базу. Попробовать сначала модели без отношений, а после - с отношениями друг к другу.

Задание 7

Обновить модели с предыдущего урока для интернет-магазина:

  • Добавить null True
  • Изменить поля моделей
  • Изменить параметры полей

5. Формы

Задание 1

Изучить и понять все преимущества и недостатки инструментов, которые были рассмотрены на уроке.

Задание 2

Создать несколько форм для авторизации пользователя.

Задание 3

Найти информацию что такое ModelForm и создать несколько таких форм.

Задание 4

Создать форму для отправки отзыва на продукт для интернет-магазина. Форма должна вмещать:

  • Файл с картинкой.
  • Почту пользователя.
  • Описание.
  • Выбор оценки.
  • Негативный или позитивный отзыв.
  • Номер телефона.

6. Работа с базой данных

Задание 1

Изучить и понять все преимущества и недостатки инструментов, которые были рассмотрены на уроке.

Задание 2

Создать новые модели, которые будут иметь отношение много-к-многим, запустить миграции и попробовать использовать все те фильтры, которые были рассмотрены на уроке.

Задание 3

Попрактиковаться в вытягивание данных. Вытянуть данные и отправить их на страницу с помощью запроса GET.

Задание 4

Вытягивать данные из созданных моделей. Вытянуть данные, которые начинаются на большую букву “Л” Вытянуть данные, которые включают цифру. Отсортировать данные по дате создания.

7. Регистрация, авторизация пользователей

Задание 1

Изучить и понять все преимущества и недостатки от применения инструментов, которые были рассмотрены на уроке.

Задание 2

Создать простое view с помощью DRF, которое будет отвечать на запрос PING ответом PONG. Подход и способы выбрать на своё усмотрение.

Задание 3

Изучить как работает данный API (https://openweathermap.org/api). Рассмотреть документацию, какие там есть запросы, какие есть способы вытянуть данные из него и какая структура данных. Чтобы бы вы изменили, удалили или добавили?

Задание 4

Подключить к приложению Django Rest Framework.

Задание 5

Изучить и понять все преимущества и недостатки от инструментов, которые были рассмотрены на уроке.

Задание 6

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

Задание 7

Дописать API для уже существующих моделей для игр с предыдущих уроков. Использовать авторизацию, права доступа и другие инструменты, рассмотренные на уроке. У пользователя API должна быть возможность вывести все игры по дате, добавить игру, удалить, изменить, а также вытянуть игру по названию или id.

Задание 8

Создать с помощью Django Rest Framework API, который будет использовать права доступа, аутентификацию, представления и маршрутизаторы.

8. Ajax

Задание 1

Изучить и понять все преимущества и недостатки от применения инструментов, которые были рассмотрены на уроке.

Задание 2

Рассмотреть документацию nginx. Изучить другие параметры и команды, которые можно использовать для деплоя.

Задание 3

Скачать открытый Django проект с github и попробовать его задеплоить. Рассмотреть какие возникают проблемы и ошибки. Самостоятельно найти решения к ним.

Задание 4

Запустить свое приложение на удаленном linux сервере с помощью nginx и uwsgi.

Задание 5

Изучить и понять все преимущества и недостатки от применения инструментов, которые были рассмотрены на уроке.

Задание 6

Поднять еще один инстанс AWS и задеплоить туда с помощью uwsgi и nginx.

Задание 7

Запустить свое приложение на ресурсе PythonAnywhere. Поэкспериментировать с файлами настроек. Добавить возможность запустить приложение при перезапуске сервера.

Задание 8

Запустить свое приложение на сервисе AWS.

9. Безопасность

Задание 1

Изучить и понять все преимущества и недостатки инструментов, которые были рассмотрены на уроке.

Задание 2

Запустить проверку приложения на сервисе для проверки безопасности.

Задание 3

Сделать ошибку в защите и попробовать взломать приложение.

Задание 4

Рассмотреть, безопасно ли приложение, которое создавалось в процессе уроков.

About

Python ITVDN

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published