Python Hub - сборище Питонистов
1.71K subscribers
657 photos
1 video
37 files
278 links
Уголок счастья для любого питониста.

Сотрудничество или заказы: @leshunist

https://shcoder.dev - студия разработки ShcoderDevelopment

https://t.me/pythonhub_chat - чат
Download Telegram
Использование в шаблонах и отправка на сервер форм в Django [продолжение]


📎(первая часть)

➡️ Отправка форм на сервер

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

from django.shortcuts import render
from .forms import LoginForm

def login_view(request):
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
# Обработка валидной формы
pass
else:
form = LoginForm()
return render(request, 'login.html', {'form': form})


Здесь мы определяем представление login_view, которое обрабатывает запросы GET и POST. Если запрос GET, мы создаем экземпляр формы и передаем его в контекст шаблона. Если запрос POST, мы создаем экземпляр формы, передаем ему данные из запроса и проверяем, является ли форма действительной. Если форма действительна, мы можем обрабатывать данные.

➡️Использование форм в шаблонах

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

<form method="post">
{% csrf_token %}
{{ form.as_p }}
<button type="submit">Отправить</button>
</form>


Здесь мы используем тег form для создания HTML-формы. Мы указываем метод отправки POST и добавляем защитный токен csrf_token. Затем мы используем метод as_p() для отображения полей формы в виде абзацев.

#django #forms #формы
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Что выдаст код выше?
Anonymous Quiz
44%
True
25%
False
15%
Error
15%
Не знаю
👍3🥰1
Что такое map() в Python?


Python имеет множество встроенных функций. Одна из таких функций - map(). Эта функция используется для преобразования каждого элемента в итерируемом объекте, таком как список или кортеж.

➡️Как использовать функцию map()

Синтаксис функции map() очень прост:

map(function, iterable, ...)


Первый аргумент - это функция, которая будет применена к каждому элементу итерируемого объекта. Второй аргумент - это итерируемый объект, который нужно преобразовать. Дополнительные аргументы могут быть добавлены для нескольких итерируемых объектов.

Пример использования функции map():

def square(x):
return x ** 2

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(square, numbers)
print(list(squared_numbers))


Вывод: [1, 4, 9, 16, 25]

➡️Применение лямбда-функций с map()

map() часто используется вместе с лямбда-функциями, что делает код более компактным. Вот пример:

numbers = [1, 2, 3, 4, 5]
squared_numbers = map(lambda x: x ** 2, numbers)
print(list(squared_numbers))


Вывод: [1, 4, 9, 16, 25]

➡️Преобразование нескольких списков с map()

Вы также можете использовать функцию map() для преобразования нескольких списков одновременно. Вот пример:

list1 = [1, 2, 3]
list2 = [4, 5, 6]
summed_list = map(lambda x, y: x + y, list1, list2)
print(list(summed_list))


Вывод: [5, 7, 9]
Please open Telegram to view this post
VIEW IN TELEGRAM
👍51
Что выдаст код выше?
Anonymous Quiz
17%
Parent
9%
Child
59%
Mark
9%
Error
7%
Не знаю
👍41
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

У нас есть класс, с уже заданными в нем полями a = 5, b = 3. В классе так же есть метод res(), который возвращает результат суммы полей.

Создаем на основе класса объект a.
Далее, в переменную b присваиваем результат вызова A.res(a) —> вызвали метод через класс, а в self передали наш объект а —> получили сумму 5+3 = 8.

Далее c = a.res() —> вызываем метод уже через сам объект, но все равно сам объект идет в self. Получаем тоже 5 + 3 = 8

Проверка b == c —> 8 == 8 —> True

В этой задаче рассмотрены 2 способа вызова метода. Через класс, передавая объект, и через сам объект.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3🤯1
Как использовать time.sleep()?

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

Функция time.sleep() принимает один аргумент - количество секунд, на которое нужно приостановить выполнение программы. Например, если вы хотите приостановить выполнение программы на 5 секунд, вы можете использовать следующий код:


import time

print("Начало выполнения программы")

# Приостановить выполнение программы на 5 секунд
time.sleep(5)

print("Программа завершила выполнение")
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

Затянувшийся разбор, извиняюсь!

У нас отличный пример наследования. Так как класс Child наследуется от класса Parent, то __init__ Parent'a будет и __init__'ом Child'a.

Помним, что __init__ - это метод конструктор, вызывающийся при создании объекта.

Соответственно, создаем объект mark = Child('Mark') —> в поле name объекта помещается имя Mark.
Ну а далее метод info() выводит нам это имя на экран.

Ответ: Mark
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Python Hub - сборище Питонистов
🧑‍🎓 Задача: Точная степень двойки Дано натуральное число N. Выведите слово YES, если число N является точной степенью двойки, или слово NO в противном случае. Операцией возведения в степень пользоваться нельзя! ❗️усложнением будет являться решение через…
Хочу сказать спасибо всем, кто присылал решения на данную задачу!

Кто не присылал, присоединяйтесь следующий раз!😎

Начнем с разбора кода рекурсией.
Возьмем первое же решение. (они все схожи)

def is_power_of_two(n): #Функция получает в себя число
if n == 1: #Проверка на то, что число равно 1
return "YES" #Возвращаем YES в ВЫЗОВ
elif n % 2 == 1: #Проверка на нечетность(степенью никак не может быть)
return "NO" #Возвращаем NO в ВЫЗОВ
else: #Иначе
return is_power_of_two(n//2) #Возвращаем вызов функции.

Хочется отметить, что возвращая вызов функции, мы вернем ТО, ЧТО ФУНКЦИЯ ВЕРНЕТ. То есть у нас получается возврат, возвращаемого значения. Надеюсь, поняли🙃.

А теперь то же самое, только при помощи while. Ничего особо не меняем и... вуаля.

def is_power_of_two(n): #Функция получает в себя число
while True:
if n == 1: #Проверка на то, что число равно 1
return "YES" #Возвращаем YES в ВЫЗОВ
elif n % 2 == 1: #Проверка на нечетность(степенью никак не может быть)
return "NO" #Возвращаем NO в ВЫЗОВ
else: #Иначе
n = n//2 #Уменьшаем значение n

Cвои вопросы по этой или другим темам вы можете задавать сюда или в предложку.

Скоро следующая задача!👨‍🎓
👍2👎1
Что выдаст код выше?
Anonymous Quiz
30%
True
57%
False
11%
Error
2%
Не знаю
👍3
Инкапсуляция в Python


Инкапсуляция - это один из четырех основных принципов объектно-ориентированного программирования. Она позволяет скрыть внутреннюю реализацию объекта от других объектов и защитить его состояние от неправильного использования.

➡️ Методы и атрибуты

В Python, чтобы скрыть атрибуты объекта, их нужно объявить как приватные, используя два подчеркивания перед именем атрибута. Например, для создания приватного атрибута name нужно написать __name. Также для доступа к этому атрибуту извне класса нужно использовать специальные методы get и set.

Метод get возвращает значение приватного атрибута, а метод set устанавливает новое значение. Эти методы должны быть определены в самом классе. Например:

class Person:
def __init__(self, name):
self.__name = name

def get_name(self):
return self.__name

def set_name(self, name):
self.__name = name

person = Person("John")
print(person.get_name()) # "John"
person.set_name("Mike")
print(person.get_name()) # "Mike"

#ООП #инкапсуляция
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥3👍1
К посту выше.

Для чего нужна инкапсуляция вообще?

- Защита данных от внешнего доступа
- Предотвращение случайных изменений данных
- Упрощение взаимодействия с объектами
- Сокрытие сложной логики работы объекта от пользователя

Будет ли код работать без нее?

- Да, будет
🔥5
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

В переменную а мы кладем число 10, переведенной в строковый формат —> str(10) —> "10"
В переменную b мы кладем результат вычисления, переведенный в строковый формат str( 1000 / 100 ) —> str(10.0) —> "10.0"

Далее выводим проверку на равенство. Очевидно, что два этих ТЕКСТА ( тип строки ) не равны.
Ответ: False
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Какая база данных используется в Django?


➡️ SQLite

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

➡️ PostgreSQL и MySQL

Django также поддерживает PostgreSQL и MySQL в качестве баз данных. Эти базы данных могут обрабатывать большие объемы данных и подходят для крупных и сложных приложений. При использовании этих баз данных вы можете использовать мощные функции, такие как репликация, кластеризация и балансировка нагрузки, что делает их идеальным выбором для больших проектов.
#django
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
Python Hub - сборище Питонистов
Photo
Разбор 👨‍💻

У нас есть словарь с данными.
Циклом мы пробегаемся по парам, благодаря конструкции .items(), заносим ключи в переменную i, а значения в j поочередно.

Далее, при помощи метода extend(), добавляем ключ и значение в наш список L, распаковав их.

Таким образом мы каждый раз добавляем в список распакованные ключ и значение из пары.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1