• Почему request.user равен AnonymousUser?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Если посмотрите у себя в settings.MIDDLEWARE,
    то увидите к примеру django.contrib.sessions.middleware.SessionMiddleware
    которая берет из кук сессионную куку, и добавляет данные сессии к запросу:

    session_key = request.COOKIES.get(settings.SESSION_COOKIE_NAME)
            request.session = self.SessionStore(session_key)


    а затем там же django.contrib.auth.middleware.AuthenticationMiddleware, в котором если покопаться - то можно найти как получается пользователь из сессии, которую мы добавили к запросу в предыдущем middleware. Я просто не буду перечислять все шаги - иначе это будет тема отдельного длинного поста.
    Просто походите по MIDDLEWARE и AUTHENTICATION_BACKENDS - да посмотрите что откуда берется. У вас может быть некий свой набор...
    Поэтому если у вас в куке не прилетел параметр сессионной куки - тупо в request.COOKIES нет параметра settings.SESSION_COOKIE_NAME который по дефолту называется sessionid- то и пользователю взяться неоткуда.
    Поэтому копайте точнее что там вам прилетает. Если возможности сохранять сессионную куку нет - то можно к примеру в урл редиректа добавлять некий хеш, по которому можно получать пользователя, написав свой middleware если требуется...
    Ответ написан
    5 комментариев
  • Как вставить единственное значение списка без скобок?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    print(', '.join(map(str, filter(bool, numbers))))
    если я правильно понял проблему
    Ответ написан
    Комментировать
  • Как устанавливать библиотеки через код без cmd?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    pip - вроде как модуль python - соответственно можно программно команды запускать, используя процедуры модуля:
    from pip._internal.cli.main import main
    
    main(['install', 'xlrd'])
    #Collecting xlrd
    #  Downloading xlrd-2.0.1-py2.py3-none-any.whl (96 kB)
    #     |████████████████████████████████| 96 kB 541 kB/s 
    # Installing collected packages: xlrd
    # Successfully installed xlrd-2.0.1
    # WARNING: You are using pip version 21.1.1; however, version 21.2.4 is available.
    # You should consider upgrading via the '/opt/.../rvenv/bin/python -m pip install --upgrade pip' command.
    
    import xlrd
    
    xlrd.__version__
    #  '2.0.1'
    
    main(['freeze'])
    # aioredis==1.3.1
    # amqp==5.0.6
    # argon2-cffi==20.1.0
    # asgiref==3.3.4
    # ...

    единственно - зачем это делать в самом коде...
    Ответ написан
    Комментировать
  • Можно ли из телефона сделать чайник?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Я бы не советовал вообще этим в школе заниматься.
    Емкости батареи телефона не хватит для того чтобы воду вскипятить.
    А вот замыкание аккумулятора чревато возгоранием и пожаром, а то и взрывом. Так что не стоит эта затея выбитых глаз и химических ожогов, - поверьте...
    Используйте более традиционные и безопасные инструменты.
    Ответ написан
  • Как уничтожить вирус в сети?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Отключение всех машин от сети.
    Лечение зараженных машин с LiveDisk с установленным свежим антивирусом.
    Включение вылеченной машины обратно в сеть
    Ответ написан
    6 комментариев
  • Как найти одно изображение на другом изображении?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    2 комментария
  • Как запустить функцию?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Вышлите СМС на номер +79281234567 с названием активируемой функции.
    Что значит активировать? Выполнить? Ну так откройте учебник по Python, да прочитайте пару абзацев об использовании функций...
    greeting('somename') в вашем случае.
    Ответ написан
    1 комментарий
  • Множественный if then else, как заменить, упростить и простить?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Ну в python к примеру так можно решить
    # некий набор функций для каждого региона
    def region1():
        ....
    
    def region2():
         ...
    
    def defaultregion():
        ...
    
    # соответствие номеров функциям
    func = {
       '1': region1,
       '2': region2,
       ...
    }.get(region_number, defaultregion)
    
    func()   # в func - нужная функция, обусловленная выбором номера региона. выполняем ее
    Ответ написан
  • Как достать байты из строки python?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    import re
    
    me_string = 'b"some bytes"'   # нужно понимать что это - строка
    result = re.match('^b\"(.*)\"$', me_string).group(1).encode()
    
    print(result)
    # b'some bytes'
    print(type(result))
    # <class 'bytes'>
    Ответ написан
    Комментировать
  • Что не так с этой проверкой в цикле?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Так вы int сравниваете с tuple
    У них даже типы разные
    Ответ написан
    Комментировать
  • Как узнать какие я использую модули в программе?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Как уже сказал Сергей Карбивничий - изначально нужно делать запуск программы в своем виртуальном окружении.
    Сейчас - разве что делаете
    pip freeze > requirements.tmp
    чтобы получить все версии ваших модулей на данный момент.
    Затем делаете новое виртуальное окружение, и пытаетесь в нем свою программу запустить. Она будет вылетать из-за того что какие-то модули видеть не будет. Вот по названиям находите их из requirements.tmp, и устанавливаете, вместе с номером версии... И делаете так пока программа вылетать не будет. Если все пройдет удачно - у вас будет нужный набор модулей конце, который вы сохраните через pip freeze в свой requirements.txt
    Ответ написан
    Комментировать
  • Как в Windows создать файл с кириллицей в названии файла?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Перекодируем из utf-8 в windows-1251:
    with open('f.txt') as file:
        lines = file.read().splitlines()
    
    for line in lines:
        with open(line.encode('utf8').decode().encode('cp1251'), 'w') as file:
            file.write('')

    и получаем желаемое:
    61402f464cb95632624286.jpeg
    Ответ написан
    Комментировать
  • Как разделить квадраты которые пересикаются?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Для частного случая если у вас квадраты примерно одинаковы и в основном соприкасаются:
    - получаем контуры элементов с помощью cv2.findContours в список contours
    - находим площадь наиболее часто встречающегося элемента с помощью collections.Counter.most_common по найденным контурам - это мы найдем площадь одного квадрата - по сути количество пикселей в одном квадрате
    occurence_count = Counter(map(lambda x:cv2.contourArea(x), contours))
    most_common_area = round(occurence_count.most_common(1)[0][0])

    - находим общее количество черных пикселей black_pixels = np.sum(binary == 0)
    - делим общее количество черных пикселей на количество пикселей одного квадрата, округляем - получаем общее число квадратов на картинке

    У меня вышло примерно 1035
    Ответ написан
  • Как разрешить только одну запись в БД Django 3?

    fox_12
    @fox_12 Куратор тега Django
    Расставляю биты, управляю заряженными частицами
    Реализовать Singleton модель к примеру...
    Ответ написан
    Комментировать
  • Что в библиотеке Python numpy означает запись numpy.sum(img==1)?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Считает количество элементов равных "1"
    >>> a = numpy.array([0,1,1,0,1,1,1,0,0,1])
    >>> numpy.sum(a==1)
    6
    >>> numpy.sum(a==0)
    4
    Ответ написан
    2 комментария
  • Как переформатировать переменную datetime?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Отсеяв лишнее, оставив только дату. При этом, сохранить у test1 тип datatime

    Определитесь что вам надо точнее.
    datetime содержит сведения о времени. Если его вам там не надо - то используйте тип datetime.date
    Если сведения о времени нужно обнулить - то используйте combine
    Если все нужно сохранить но просто вывести строкой куда-то без времени - то просто форматируйте вывод - с временем или без - как угодно...
    date1 = datetime.datetime.fromisoformat('2021-09-08 15:45:40.260000+00:00')
    # datetime.datetime(2021, 9, 8, 15, 45, 40, 260000, tzinfo=datetime.timezone.utc)
    
    date1.strftime('%Y-%m-%d')
    # '2021-09-08'
    
    date1.date()
    # datetime.date(2021, 9, 8)
    
    date1.date().isoformat()
    # '2021-09-08'
    
    datetime.datetime.combine(date1.date(), datetime.datetime.min.time())
    # datetime.datetime(2021, 9, 8, 0, 0)
    Ответ написан
    Комментировать
  • Чем следить, детектить подозрительный трафик?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    Ответ написан
    Комментировать
  • Как работает докер и нужен ли он для веб-приложений?

    fox_12
    @fox_12
    Расставляю биты, управляю заряженными частицами
    1. Если контейнер содержит в себе веб-сервер, бд, то при написании второго приложения и его запуске в системе будет крутиться два веб-сервера?

    Да. Но ничто не мешает использовать впереди один веб-сервер, и обслуживать им два контейнера с веб-приложениями.
    2. Насколько вообще оправдано использование докера например при написании веб-приложения на python?

    Одно окружение что на сервере, что на рабочей станции разработчика.
    Отличная интеграция в CI/CD на практике.
    Нет необходимости засорять машину разработчика кучей установленных БД разных версий, доп. ПО и прочего.
    Легкость развертывания и прочее.
    Так что достаточно оправданно...
    3. Если хост-система Windows, то для работы с докером нужно запускать виртуальную машину с Linux и на ней разворачивать докер?

    Докер есть и под windows
    Ответ написан
    1 комментарий
  • Очиститель файла после знака?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Подсказка:
    '164672jeirjfueheh: mom don Bob'.split(':')[0]
    # '164672jeirjfueheh'

    Пробегаете по всему файлу и выполняете эту нехитрую операцию над каждой строкой
    Ответ написан
    Комментировать
  • Как исправить resulttoo large в коде?

    fox_12
    @fox_12 Куратор тега Python
    Расставляю биты, управляю заряженными частицами
    Попробовать использовать везде decimal:

    import math
    
    a, alpha, x = 10, 10, 10
    
    y1 = math.log(abs(x**3)) + math.tan(alpha)-pow(math.e, a*(x**2)+x)
    
    print(y1)
    
    # OverflowError: (34, 'Result too large')

    Та же формула обернутая в decimal.
    Выглядит громоздковато, но отрабатывает корректно:

    import math
    import decimal
    
    decimal.getcontext().prec = 100
    
    a, alpha, x = 10, 10, 10
    
    y1 = decimal.Decimal(math.log(decimal.Decimal(abs(decimal.Decimal(x)**decimal.Decimal(3))))) \
        + decimal.Decimal(math.tan(decimal.Decimal(alpha))) \
        - decimal.Decimal(pow(decimal.Decimal(math.e), decimal.Decimal(a)*(decimal.Decimal(x)**decimal.Decimal(2))+decimal.Decimal(x)))
    
    print(y1)
    
    # -4.339370400623091759291109148627508614055728677394889807059531826625028640984354352252576981241604834E+438
    Ответ написан
    Комментировать