

- Главная
 - Каталог
 - Интернет технологии
 - Python | Вопросы собесов
 
Python | Вопросы собесов
Разбираем вопросы с собеседований на Python разработчика. Очень активная и лояльная аудитория.
Статистика канала
Полная статистикаchevron_rightUser) и механизме сессий. Когда пользователь входит в систему, Django проверяет его учетные данные и создает сессию, сохраняя в ней идентификатор пользователя.
Процесс можно разделить на несколько шагов:  
Пользователь вводит логин и пароль.  
Django проверяет данные через аутентификационный бэкенд.  
Если данные верны, Django создает сессию.  
При каждом запросе Django проверяет, авторизован ли пользователь.  
django.contrib.auth.models.User. Она содержит:
username, email, password
is_staff, is_superuser, is_active
date_joined, last_login
    
        from django.contrib.auth.models import User
# Создание пользователя
user = User.objects.create_user(username="admin", password="12345")
user.email = "admin@example.com"
user.save()
# Проверка пароля
print(user.check_password("12345"))  # True{}
    
authenticate() для проверки учетных данных.
    
        from django.contrib.auth import authenticate
user = authenticate(username="admin", password="12345")
if user is not None:
    print("Успешный вход!")
else:
    print("Ошибка аутентификации!"){}
    
login().
    
        from django.contrib.auth import login, logout
def user_login(request):
    user = authenticate(username="admin", password="12345")
    if user:
        login(request, user)  # Создает сессию
        return "Пользователь вошел!"
    return "Ошибка входа"
def user_logout(request):
    logout(request)  # Удаляет сессию
    return "Пользователь вышел!"{}
    
    
        if request.user.is_authenticated:
    print("Пользователь залогинен:", request.user.username)
else:
    print("Гость"){}
    
Для защиты маршрутов можно использовать декоратор @login_required:
    
        from django.contrib.auth.decorators import login_required
@login_required
def profile(request):
    return "Это страница профиля!"{}
    
django.contrib.auth.backends.ModelBackend для аутентификации через базу данных. Можно добавить кастомные бэкенды:
    
        AUTHENTICATION_BACKENDS = [
    'django.contrib.auth.backends.ModelBackend',  # Обычная аутентификация
]{}
    
User недостаточно, можно создать кастомную модель
    
        from django.contrib.auth.models import AbstractUser
class CustomUser(AbstractUser):
    phone_number = models.CharField(max_length=15, unique=True)
# В settings.py указываем свою модель
AUTH_USER_MODEL = "myapp.CustomUser"{}
    
    
        if user.has_perm("app_name.permission_codename"):
    print("У пользователя есть разрешение!"){}
    
Использование групп
    
        from django.contrib.auth.models import Group
group = Group.objects.create(name="Editors")  # Создаем группу
user.groups.add(group)  # Добавляем пользователя в группу{}
    
Ставь 👍 и забирай 📚 Базу знаний
    
        x = "глобальная"  # Global
def outer():
    x = "охватывающая"  # Enclosing
    def inner():
        x = "локальная"  # Local
        print(x)  # Поиск начинается отсюда (L)
    
    inner()
outer(){}
    
Вывод  
    
        локальная{}
    
global
    
        x = 10  # Глобальная переменная
def modify_global():
    global x
    x = 20  # Меняем глобальную переменную
modify_global()
print(x)  # 20{}
    
nonlocal
    
        def outer():
    x = 10  # Переменная из enclosing-области
    
    def inner():
        nonlocal x
        x = 20  # Меняем `x` в `outer()`
    
    inner()
    print(x)  # 20
outer(){}
    
NameError
    
        def func():
    print(y)  # Ошибка: y не объявлена!
func()  {}
    
Ошибка  
    
        NameError: name 'y' is not defined{}
    
print(), len(), sum() и т. д.).  
    
        print = "Ошибка!"  # Переопределили встроенную функцию
print("Hello")  # TypeError: 'str' object is not callable{}
    
Ставь 👍 и забирай 📚 Базу знаний@ используется для декораторов, и разница между @foobar и @foobar() заключается в том, вызывается ли сам декоратор с параметрами или без.
@foobar, то используется сам декоратор как есть, без передачи аргументов.
    
        def foobar(func):
    def wrapper():
        print("Декоратор вызван!")
        return func()
    return wrapper
@foobar  # Просто передаём функцию в декоратор
def hello():
    print("Hello, world!")
hello(){}
    
Вывод  
    
        Декоратор вызван!
Hello, world!{}
    
foobar()), а потом возвращает сам декоратор.
    
        def foobar(arg):
    def decorator(func):
        def wrapper():
            print(f"Декоратор вызван с аргументом: {arg}")
            return func()
        return wrapper
    return decorator
@foobar("Привет")  # Вызываем foobar("Привет"), который вернёт реальный декоратор
def hello():
    print("Hello, world!")
hello(){}
    
Вывод  
    
        Декоратор вызван с аргументом: Привет
Hello, world!{}
    
Ставь 👍 и забирай 📚 Базу знанийОтзывы канала
всего 2 отзыва
- Добавлен: Сначала новые
 - Добавлен: Сначала старые
 - Оценка: По убыванию
 - Оценка: По возрастанию
 
Каталог Телеграм-каналов для нативных размещений
Python | Вопросы собесов — это Telegam канал в категории «Интернет технологии», который предлагает эффективные форматы для размещения рекламных постов в Телеграмме. Количество подписчиков канала в 13.6K и качественный контент помогают брендам привлекать внимание аудитории и увеличивать охват. Рейтинг канала составляет 7.6, количество отзывов – 2, со средней оценкой 5.0.
Вы можете запустить рекламную кампанию через сервис Telega.in, выбрав удобный формат размещения. Платформа обеспечивает прозрачные условия сотрудничества и предоставляет детальную аналитику. Стоимость размещения составляет 5454.54 ₽, а за 13 выполненных заявок канал зарекомендовал себя как надежный партнер для рекламы в TG. Размещайте интеграции уже сегодня и привлекайте новых клиентов вместе с Telega.in!
Вы снова сможете добавить каналы в корзину из каталога
Комментарий