• Знаете площадки для поиска наставников?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    solvery.io
    Ответ написан
    Комментировать
  • Как можно решить это проблему?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Поставь Linux и не парься. Если ты разработчик, то у тебя сразу вырастет продуктивность - меньше отвлечений на всякие игрушки, меньше трат времени на борьбу с глюками системы и (анти)вирусами, лучше утилизируются ресурсы железа. Многие решения (Docker, к примеру) разработаны на Linux и для Linux и присутствуют на винде по костыльно-остаточному принципу. В общем если ты разработчик (не 1С) - меняй систему и не мучайся. На подсчёт ворон времени точно не останется :-)
    Ответ написан
    5 комментариев
  • Python - как сохранить веб-страницу (статью Telegraph) в PDF?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Вполне рабочее решение. Работает и на сервере тоже. https://wkhtmltopdf.org/
    Ответ написан
  • Как создать велосипед в django?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Мне кажется, что люди стабильно не понимают, зачем и кому нужна админка в Джанго. Джанго построен вокруг собственного ORM. Этот слой абстракции позволяет не работать с БД чистым SQL. Проблема возникает когда (в процессе разработки или эксплуатации) хочется прямого доступа к записям в БД.
    Админка это способ организации такого "прямого" (кавычки потому что всё равно через ORM) доступа к записям. Плюс на него можно навесить немного инструментария, который разработчику хотелось бы иметь под рукой. Принудительно сбросить пользователю пароль, удалить какое-то кол-во записей и т.д. Чисто программерские фишки, востребованные в процессе разработки.
    Вся конструкция вертится вокруг того, что разработчики админки не знали, какая конкретно у вас будет структура БД. Поэтому там очень многое построено на магии. Но общие решения никогда не заменят специализированные.

    Если вам надо дать (избранным) пользователям доступ к каким-то админским функциям для управления сайтом - напишите админку конкретно для них.
    Не надо использовать для этого django.contrib.admin, не надо её модифицировать или заменять. Админка Джанги отдельно - прочие мухи отдельно.

    Посмотрите на https://github.com/oscarmlage/django-cruds-adminlte к примеру... И шаблон привычно админский и бОльшая часть типовых операций автоматизирована.

    Поищите на djangopackages.org что-нибудь. Кстати, большая часть раздела Admin Interface или просто шкурки, настраивающие внешний вид, или заброшены.
    Ответ написан
    Комментировать
  • Как реализовать авторизацию по социальным сетям в Django Rest?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Ну, если глянуть на djangopackages.org (запрещённая РКН организация), то можно сходу найти django-rest-framework-social-oauth2

    А если на Djoser смотреть, то в документации есть раздел https://djoser.readthedocs.io/en/latest/social_end... про использование связки с python-social-auth
    Ответ написан
  • Почему не происходит выход из цикла в python 3.8.0?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Да, дружище, это не Паскаль

    Подумай, с чем ты сравниваешь переменную 'c'? Не с ДА или YES, а с результатом логической операции or
    т.е. твоё ('Да') or ('да') всегда вернёт True
    Переменная же 'c' - не пустая, а, значит, тоже True в смысле булевых отношений. Так что у тебя всегда "ДА"
    Если переделывать твой Паскаль-код, то это, скорее,
    if c == 'Yes' or c == 'yes' or c == 'y' и т.д.

    Но лучше писать сразу на Питоне: проверяй полученное значение на вхождение в список. Так проще:
    if c in ['Yes', 'yes', 'y', 'Да']:

    Но у тебя сплошной повтор одного и того же (плюс я могу ж и "YES" ввести!). Будь проще:
    if c.lower() in ['yes', 'y', 'да', 'д']:

    Далее - вынеси блок
    c = input('Продолжить работу? Д/Н ')
    if c == ('Да') or ('да') or ('Yes') or ('yes') or ('y') or ('Y') or ('д') or ('Д'):
      continue
    elif c == ('Нет') or ('нет') or ('No') or ('no') or ('n') or ('N'):
      break

    после оператора if. Тогда он будет у тебя написан один раз. Это правильно. Не повторяй себя.

    Ну, как-то так...

    print('\n')
    print('Калькулятор\n\n')
    while True:
      x = int(input('Введите первое число: '))
      y = int(input('Введите второе число: '))
      z = input('Введите знак: ')
      res = 0
      if z == '+':
        res = x + y
      elif z == '-':
        res = x - y
      elif z == '*':
        res = x * y
      elif z == '/':
        res = x / y
      else:
        print('Оператор обязателен и может быть только + или - или * или / ')
        continue
    
      print('Ваш результат: ',res)
      c = input('Продолжить работу? Д/Н ')
      if c.lower() in ['да', 'yes','y', 'д']:
        continue
      elif c.lower() in ['нет', 'no', 'n', 'н']:
        break


    Тут можно ещё много чего усовершенствовать, но, надеюсь, главное ты понял :-)
    Ответ написан
    Комментировать
  • Как стать Python Middle Developer?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Junior: спрашивает "как мне это сделать?"
    Middle: объясняет джуну, как сделать и интересуется у сеньёра "что ещё надо сделать?"
    Senior: организует список задач (мидлу и джуну), объясняет, почему это делать не надо, а лучше сделать вот это. И делает.

    Как-то так.

    Вопрос именно опыта. Причём не только и не столько в Python, сколько вообще в IT и вокруг. Надо и админить хоть немного, и языки расширять и технологиями интересоваться. Книжки читать. И не только технические.
    Софт-скиллз эти самые уметь...
    Ответ написан
    Комментировать
  • Что пишут на питоне?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    - Сайты (бэкенд, фронт - это вотчина JS, хотя и туда проникает в виде brython, skulpt)
    - Десктопные программы разного уровня сложности (видел банкоматную начинку на PyQT, можно посмотреть на Ultimaker - софт для управления 3Д-принтерами)
    - AI / ML / математика / биология / аналитика
    - Встраиваемый язык расширения возможности программ (в Blender, к примеру)
    - микроконтроллеры (micropython)
    - драйверы устройств и OS - (это, скорее, академические проекты из разряда "быстренько как иллюстративный материал к курсачу")
    - утилиты командной строки
    - командные оболочки (по типу bash - смотри fish)
    - мессенджеры как GUI (Gajim), так и TUI
    - боты подо всё, что можно
    - приложения и игры для Android

    В общем можно писать всё. Вопрос в том, где его лучше применять - это другой вопрос.
    А ты что хочешь писать?
    Ответ написан
  • Как настроить в DJOSER еще одну авторизацию?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Ответ написан
    Комментировать
  • PDF OCR консольный вариант или python?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    cuneiform из командной строки нормально распознаёт и сохраняет. А так - tesseract и pyocr. PDF напрямую не умеет, но растеризовать его в PNG - делов-то...
    Как-нибудь так:
    from wand.image import Image as Img
    from wand.color import Color
    from PIL import Image
    import pyocr
    import pyocr.builders
    import os
    from timeit import default_timer as timer
    
    pdf_name = '1.pdf'
    pdf_path = os.path.join(os.getcwd(), pdf_name)
    
    img_name = 'pdf_1'
    image = f'{img_name}.png'
    
    with Img(filename=pdf_path, resolution=300) as img:
        img.format = 'png'
        img.background_color = Color('white')
        img.alpha_channel = 'remove'    
        img.save(filename=image)
    
    tools = pyocr.get_available_tools()[1]
    lang = tools.get_available_languages()
    
    builder = pyocr.builders.TextBuilder()
    
    start = timer()
    text = tools.image_to_string(Image.open(image), lang='rus', 
                                 builder=builder)
    end = timer()
    print(f"{end - start} \n\n")
    
    print(text)

    PyOCR - там нормальная документация
    Ответ написан
  • Почему UWSGI не видит Django-приложение?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Я не использую chdir, а указываю (правда у меня - XML формат)
    <wsgi-file>/home/kkomissarov/bot/project/config/wsgi.py</wsgi-file>
    <pythonpath>/home/kkomissarov/bot/project</pythonpath>
    <pythonpath>/home/kkomissarov/bot/project/config/</pythonpath>
    <module>wsgi</module>

    Как-то так...
    Ответ написан
  • Можно ли написать свой редактор кода на python?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Ну, если хочется - смотри на то, что есть и делай лучше.
    Вообще-то камень преткновения здесь - грамотный текстовый движок. Их, доступных для Питона, очень не много.
    Есть в TkInter - его, если мне не изменяет память, использует штатный питоновский IDLE.
    Так же есть интересный проект https://thonny.org - тоже TkText расширяет.
    Раньше TkInter использовал LeoEditor, но он давно перешёл на Qt (leoeditor.com ) и использует свой движок (хотя, скорее, там есть возможность выбора - давно не смотрел).

    Scintilla - как компонент используется очень много где. В том числе и в коммерческой WingIDE, если я правильно помню. Примеров кода тут много, поскольку этот компонент интегрирован со всеми основными UI библиотеками.
    Смотри https://github.com/spyder-ide/spyder , ninja-ide.org ,
    https://github.com/matkuki/ExCo интересная штука, Eric IDE найди...
    Про scintilla можно почитать и на Хабре: https://habr.com/ru/post/144848/ https://habr.com/ru/post/144411/

    Кстати, там упоминается редактор, который теперь enki-editor.org и использует не scintilla, Qutepart - еще один вариант текстового движка (https://habr.com/ru/post/188144/ )

    Ещё есть интереснейший проект https://github.com/SergeySatskiy/codimension
    У него, вроде бы, тоже свой текстовый движок (на Qt, но не Scintilla)

    В общем изучай опыт и используй лучшее!
    Ответ написан
    3 комментария
  • Как реализуют инкапсуляцию в python?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Камрад hack504 хорошо направил. Модификаторы доступа.
    Просто прими тот факт, что это интерпретируемый язык и прятать в нём что-то - дело неблагодарное.
    Если тебе надо скрыть реализацию каких-то внутренних механизмов создаваемой тобой библиотеки, то тут только положиться на джентльменские соглашения с подчёркиваниями и обеспечить хорошую документацию чтобы не было необходимости залезать в потроха.
    Если ты просто что-то пишешь (конечный продукт) - просто пиши. Не заморачивайся с этим, пока не возникнет прямой необходимости.

    Если же пишешь что-то шибко коммерческое и хочешь реально скрыть реализацию, вот чтоб прям ну никак не посмотреть, что там в потрохах - пиши на другом языке. Например всю машинерию на C, а на python только обвязку.
    Ответ написан
    Комментировать
  • Как сделать фильтрацию в django?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    -- убрал абзац --
    Если речь о django_filters, то сначала надо определить этот фильтр (как в документации к пакету и написано).
    Ну и дальше по тексту.
    Один из кратких вариантов - прямо на github странице

    Лучше напиши, что уже пробовал и что не получилось.

    И прими совет: убери из имён полей этот рефрен item_ Это дублирование тебе же будет всегда мешать. И так ты знаешь, что запрашиваешь инфу из модели Item. Зачем ещё и каждое поле так маркировать? Оставь title, description и т.д.
    Ответ написан
    Комментировать
  • С чего начать разработку браузера?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Ну вот ты пишешь, что хочешь сделать браузер на движке Blink.
    Тут и кроется ответ на твой вопрос. Поднимаешь доку на Blink и смотришь как его использовать. API, примеры и т.д.

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

    Так что твоя проблема не в обработке HTML страниц (этим занимается Blink без твоего участия). Твоя проблема - правильно гуглить и читать много документации на английском и много кода на разных ЯП :-)
    Ответ написан
    Комментировать
  • Как скомпилировать код написанный на Python в смартфонe?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Если Kivy уже используете, то должны знать и такие слова как buildozer и p4a (python for android). Собственно это всё, что надо знать для сборки :-)
    Ответ написан
    Комментировать
  • Почему зависает программа?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Надо больше информации.
    К примеру поставь простейший счётчик. Чтобы выводить количество запросов до отвала. можно ещё точнее считать время. Перед циклом сохранить текущее время и в каждом print('Запрос отправлен') кроме текущего счётчика ещё выводить дельту времени. Так ты всегда сможешь увидеть сколько точно прошло запросов и через сколько точно остановился процесс.
    Прежде чем прибивать - посмотри, сколько памяти занял процесс. Может какое переполнение?
    А каково время жизни сессии? Может просто сессия истекает - ты же в рамках сессии долбишься, а не отдельными запросами.

    В общем просто аналитика. Анализ - это значительная рабочего часть времени программиста :-)
    Ответ написан
    Комментировать
  • Как оформить запрос в БД при помощи Django ORM?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Django + PostGIS = https://docs.djangoproject.com/en/2.2/ref/contrib/...
    Замечательно вместе скрещивается. Сразу и соответствующие поля в моделях и гео-методы доступны без танцев с бубном. Вычисление вхождения точки в фигуру и прочее - на раз. Я так делал. Так что можно не городить своё. Ну, если только очень хочется.
    Ответ написан
    2 комментария
  • Django custom Field Почему добавляются кавычки и с этим бороться?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    Ну, посмотри, как у тебя конкретно выглядит строка s перед 'CUBE(array[{}])'.format(s)
    Какие в неё спец-символы попадают, может что-то экранировать надо...
    Ответ написан
    Комментировать
  • Как обработать нажатие на ссылку django?

    Guest007
    @Guest007
    Django, Python, Linux и всё такое...
    на странице fight.html добавь ссылкам аттрибуты id (уникальные, само-собой) и поставь обработцик on("click") пользуясь, к примеру, JQuery в конце страницы. И пусть по этому онклик'у выполняется AJAX запрос нужного тебе вида. Так и страницу перезагружать не придётся и запросы можно строить как тебе надо.

    И, кстати,
    <a href="fight.get_absolute_url">Напасть</a>
    не слишком-то правильно...

    <a href="{% url 'fightPage' %}">Напасть</a>
    Но это ты уже в документации наверняка прочитал...

    И, да, "обычная" view делает то, что надо - всё, что ты захочешь :-)
    POST запросы принимать - так точно может
    Ответ написан
    Комментировать