Как правильно делать импорты в python | Django Rest Framework | Проект GSpot

Поделиться
HTML-код
  • Опубликовано: 29 мар 2023
  • Поговорим о том как правильно делать импорты в python. Какие подходы существуют.
    Плюсы и минусы таких подходов к импортам.
    Ваше мнение пишите в комментариях.
    Спасибо всем кто помогает в создании данного проекта.
    --=--
    🔥Провожу индивидуальные занятия (ментор) по python, django, fastapi, javascript
    📳 Moй Telegram - t.me/DJWOMS
    --=--
    Мы в сети:
    Telegram канал - t.me/django_school
    Telegram чат - t.me/trueDjangoChannel
    Спонсорство - boosty.to/djangoschool
    Донат - donatepay.ru/don/186076
    Донат 2 - www.donationalerts.com/r/djan...
    Сайт по Django - djwoms.pro
    Сайт по Masonite - masonite.pro
    ВК - djangochannel
    --=--
    #django #djangorestframework #djangoschool #python
  • НаукаНаука

Комментарии • 24

  • @user-xn8iw5to1o
    @user-xn8iw5to1o Год назад

    Спасибо за контент! serializer_classes_by_action и permission_classes_by_action в Mixine перепределены?

    • @DjangoSchool
      @DjangoSchool  Год назад

      Да

    • @user-xn8iw5to1o
      @user-xn8iw5to1o Год назад

      @@DjangoSchool Выглядит очень стильно и практично, возьму на заметку

  • @x3martYT
    @x3martYT Год назад

    На код было приятно смотреть. Хороший пример. И согласен, что использование * крайне опасно.
    Мне нравится тема extra actions в DRF и вьюхи из-за этого кажутся большими и сериалайзеров пяток другой приходится импортировать. Но Почему-то привык их прописывать по отдельности. Тем более VSC делает это автоматом.

  • @vadim-kv
    @vadim-kv Год назад +1

    Интересует третий вариант, когда импорт делается внутри функции :)
    Например есть два разных файла с сериалайзерами. И каждый использует сериалайзер другого. Вот тут кроме как импорта из функции кода не обойтись.

    • @MrLotrus
      @MrLotrus Год назад

      Тут по-моему что-то не то с планированием проекта, если такая ситуация.

  • @user-ng6nx1uo5u
    @user-ng6nx1uo5u Год назад

    А если создать отдельный файл типа import_for_views там прописать все импорты, а в обычный views импортировать из этого файла все через звездочку?
    Тогда в самом views будет все компактно. Или так не получится?

    • @user-zf8hu2bz1j
      @user-zf8hu2bz1j Год назад

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

  • @stan_sky
    @stan_sky 9 месяцев назад

    Что можете сказать например про такой импорт : ```from module import * ``` ?

    • @DjangoSchool
      @DjangoSchool  9 месяцев назад

      Лучше так не делать. Могут быть проблемы. Как минимум с именованием.

  • @delir0
    @delir0 14 дней назад

    from module import Hello # упадёт при запуске, если Hello в модуле нет
    import module
    и где-то там:
    def f():
    module.Hello # упадёт прямо в рантайме
    Про это никогда не стоит забывать, если в проекте нет mypy/pyright

  • @mcaq1
    @mcaq1 Год назад

    можно ссылку на проект из видео пожалуйста?

  • @andrewmoon181
    @andrewmoon181 Год назад

    Сорян, но здесь не соглашусь. И у меня есть 3 аргумента
    1. ИДЕ по умолчанию скрывает импорты.
    2. Type Hinting. Слава Богу, тайп хинтинг становиться стандартом среди пайтонистов, и уже правило хорошего тона указывать тип. И тут как раз гораааздо удобнее писать
    purchase: Purchase,
    чем purchase: models.Purchase
    3. Длина строчки и читаемость - без этих serializer, models строка короче и проще читаеться.
    Исключение вижу только одно - если сам модуль - это набор функций (лень было писать клас)
    import taxes
    taxes.cancel_taxes(purchase)

    • @MrLotrus
      @MrLotrus Год назад

      Если разбивать логику по модулям, то и ваши, и Михаила предпочтения совпадут.

  • @Mr.Fix_man
    @Mr.Fix_man Год назад

    Что означает «:=» ?

    • @user-jd4rl7im6d
      @user-jd4rl7im6d Год назад

      Создаёт переменную и присваивает ей значнние

    • @pricevaice4899
      @pricevaice4899 Год назад

      моржовый оператор

  • @user-zo5fm7fq4h
    @user-zo5fm7fq4h Год назад

    А через * нельзя делать импорт? Наверное, нельзя потому, что будут загружены все объекты.

    • @DjangoSchool
      @DjangoSchool  Год назад +1

      В таком случае еще может возникнуть конфликт имен.

    • @user-zo5fm7fq4h
      @user-zo5fm7fq4h Год назад

      @@DjangoSchool Понимаю

    • @MrLotrus
      @MrLotrus Год назад

      Загружается не больше. Разница только в количестве имен в пространстве имён модуля.

  • @user-jd4rl7im6d
    @user-jd4rl7im6d Год назад

    Лучше бы про относительные и абсолютные пути рассказал, про переменную PYTHONPATH - вот где затыки бывают причем даже не только у новичков. А тут чисто какой-то очевидной фигни наготворил, если честно.

    • @user-xn8iw5to1o
      @user-xn8iw5to1o Год назад +1

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