a
a_vlasovDec. 25, 2022, 5:34 p.m.

Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework

Распространена ли практика создания таких проектов: Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework?

We recommend hosting TIMEWEB
We recommend hosting TIMEWEB
Stable hosting, on which the social network EVILEG is located. For projects on Django we recommend VDS hosting.

Do you like it? Share on social networks!

9
Evgenii Legotckoi
  • Dec. 25, 2022, 6:14 p.m.
  • (edited)

Не так сильно, как того хотелось бы.
Я попробовал некоторое время назад, но мне не понравилось.

Из затруднений было:

  • openapi generator не генерировал клиента, что попросту прибавляет много бесполезной работы
  • недостаточная поддержка функционала обращений к API мобильной платформы. При нативной разработке подобные вещи делаются в разы проще и быстрее.

В итоге на данный момент я остановился на Kotlin при изучении этого вопроса.

    a
    • Dec. 26, 2022, 10:59 a.m.
    • (edited)

    Спасибо большое! Очень жаль. Какой тогда смысл мобильного направления в Qt, если поддержка связи с сервером через REST API такая неудобная? И такой вопрос вдогонку. Qt ведь ушел из России и когда вернется и вернется ли вообще неизвестно. Стоит ли тратить время на его изучение, ведь Qt это огромный целый мир?

      Evgenii Legotckoi
      • Dec. 26, 2022, 10:14 p.m.
      • (edited)

      Какой тогда смысл мобильного направления в Qt, если поддержка связи с сервером через REST API такая неудобная?

      Вы меня об этом спрашиваете? Лучше этот вопрос задать разработчикам Qt.

      Но моё личное мнение такое. Само по себе мобильное направление жизнеспособно, но входной порог значительно выше. А бизнесу обычно нужно быстрое развитие и быстрая разработка. Бизнесу мало интересно на чём будет разрабатываться приложение, которое приносит деньги.
      Я сейчас занимаюсь изучением Kotlin и разработка движется значительно быстрее, несмотря на то, что там для меня вообще всё в новинку, а с QML у меня есть достаточно большой опыт работы. И тем не менее на Kotlin некоторые задачи удаётся решить быстрее.

      И такой вопрос вдогонку. Qt ведь ушел из России и когда вернется и вернется ли вообще неизвестно.

      А как же импортозамещение, которое будет банальным воровством с переклеиванием шильдиков? Все поделки на основе линукса будут упираться в быструю разработку, а только Qt позволяет делать это действительно быстро. В общем, стало труднее, но может иметь смысл изучать, особенно если будете искать работу за рубежом. Разработчики медицинского оборудования например сидят на Qt.

      Опять же, если вы интересуетесь именно финансовой стороной вопроса для обеспечения своего личного благополучия, то тогда лучше выбирать Kotlin/Java. Если интересен полный фулстек по мобильной разработке, то Kotlin/Java/Django/Python. И Kotlin движется в сторону кроссплатформенной разработки, но пока за удобство работсы с iOS я ничего не скажу, не пробовал ещё.

        a
        • Dec. 27, 2022, 12:42 a.m.
        • (edited)

        Спасибо за развернутый ответ! Ну да, на счет поделок на основе линукса Вы точно сказали. Наша мобильная платформа OS Аврора - яркий пример такой поделки и там как раз C++Qt основная технология для создания приложений.

          a
          • Jan. 4, 2023, 11:40 p.m.
          • (edited)

          Добрый вечер, Евгений! Такой вопрос. Возникла задача: написать пользовательский интерфейс на С++Qt к базе данных PostgreSQL (создание, чтение, обновление, удаление, фильтрация и поиск записей). В Qt есть классы для работы с базой данных, но не хотелось бы делать прямые запросы к ней, т.к. предполагается использовать этот пользовательский интерфейс за пределами локальной сети, в которой находится сервер. Возможно ли использовать для этого REST API Django, чтобы данные от БД к C++Qt-приложению передавались по http/https-протоколу?

            Evgenii Legotckoi
            • Jan. 5, 2023, 2:23 a.m.

            Добрый день. Если у вас изначально проект на Django с PostgreSQL, то особых проблем составить не должно.
            Со стороны Django используйте Django Rest Framework, делайте нормальное Rest API. Со стороны Qt/C++ можете воспользоваться QNetworkAccessManager и распарсить ответы с помощью QJsonDocument.
            Также можете попробовать сгенерировать клиента для Qt5 с помощью openapi generator . Для этого нужно будет настроить генерирование swagger документации из вашего API, и скормить полученный yaml файл генератору. Но успех не ясно какой будет, я махнул рукой на Qt в этом случае. Но Swagger всё равно полезен. Используйте для его генерирования батарейку drf-yasg

              a
              • Jan. 5, 2023, 10:56 a.m.

              Спасибо за ответ! Да, проект на Django/PostgreSQL, потому что в кратчайшие сроки нужно было создать программу для пользователей, чтобы они могли заносить данные. Конечно, логичнее всего было бы создать фронт-энд к проекту Django на JS с его реактами или ангулярами, но к JS у меня как-то не лежит душа. Хотелось бы развиваться в технологиях C++/Python, потому что рано или поздно захочется чего-то такого, "настоящего", "С/C++-ного".

                a
                • April 9, 2023, 3:11 p.m.

                Евгений добрый день! Такой вопрос. Имеется клиентская часть приложения на C++Qt и серверная часть на Django. Django может осуществлять Email-рассылки, а также генерировать Excel-файлы. Возможно ли сделать так, чтобы давая в клиентской части команду, Django делал рассылку и генерировал Excel-файлы?

                  Evgenii Legotckoi
                  • April 16, 2023, 2:07 p.m.

                  Да, это возможно. Но подобные вещи лучше запускать через celery. То есть drf принимает команду, и после этого регистрирует задачу в celery, котроый уже асинхронно всё это выполняет. В противном случае при очень длительной задаче сервер может выдать ошибку по таймауту

                    Comments

                    Only authorized users can post comments.
                    Please, Log in or Sign up
                    S

                    C++ - Test 001. The first program and data types

                    • Result:53points,
                    • Rating points-4
                    S

                    C++ - Тест 003. Условия и циклы

                    • Result:57points,
                    • Rating points-2
                    g

                    C++ - Test 005. Structures and Classes

                    • Result:100points,
                    • Rating points10
                    Last comments
                    J
                    JonnyJoMay 26, 2023, 1:24 a.m.
                    How to make game using Qt - Lesson 2. Animation game hero (2D) Евгений, благодарю!
                    Evgenii Legotckoi
                    Evgenii LegotckoiMay 25, 2023, 3:49 p.m.
                    How to make game using Qt - Lesson 2. Animation game hero (2D) Код на строчка 184-198 вызывает перерисовку области на каждый 4-й такт счётчика. По той логике не нужно перерисовывать объект постоянно, достаточно реже, чем выполняется игровой слот. А слот вып…
                    J
                    JonnyJoMay 21, 2023, 9:49 p.m.
                    How to make game using Qt - Lesson 2. Animation game hero (2D) Евгений, благодарю! Всё равно не совсем понимаю :( Если муха двигает ножками только при нажатии клавиш перемещение, то что, собственно, делает код со строк 184-198 в triangle.cpp? В этих строчка…
                    Evgenii Legotckoi
                    Evgenii LegotckoiMay 21, 2023, 4:57 p.m.
                    How to make game using Qt - Lesson 2. Animation game hero (2D) Добрый день. slotGameTimer срабатывает по таймеру и при каждой сработке countForSteps увеличивается на 1, это не зависит от нажатия клавиш, нажатая клавиша лишь определяет положение ножек, котор…
                    J
                    JonnyJoMay 20, 2023, 10:27 p.m.
                    How to make game using Qt - Lesson 2. Animation game hero (2D) Евгений, здравствуйте! Подскажите, а почему при нажатии одной клавиши переменная countForSteps увеличивается не на 1, на 4, ведь одно действие даёт увеличение этой переменной только на единицу? …
                    Now discuss on the forum
                    Evgenii Legotckoi
                    Evgenii LegotckoiApril 16, 2023, 3:07 p.m.
                    Мобильное приложение на C++Qt и бэкенд к нему на Django Rest Framework Да, это возможно. Но подобные вещи лучше запускать через celery. То есть drf принимает команду, и после этого регистрирует задачу в celery, котроый уже асинхронно всё это выполняет. В противном …
                    АБ
                    Алексей БобровDec. 15, 2021, 7:03 a.m.
                    Sorting the added QML elements in the ListModel I am writing an alarm clock in QML, I am required to sort the alarms in ascending order (depending on the date or time (if there are several alarms on the same day). I've done the sorting …
                    Evgenii Legotckoi
                    Evgenii LegotckoiMarch 29, 2023, 3:11 p.m.
                    Замена поля ManyToMany Картинки точно нужно хранить в медиа директории на сервере, а для обращения использовать ImageField. Который будет хранить только путь к изображению на сервере. Хранить изображения в базе данных…
                    Evgenii Legotckoi
                    Evgenii LegotckoiApril 24, 2023, 2:22 p.m.
                    Пакеты данных между сервером и клиентами Привет. Если классы имеют что-то общее в полях, а также общую идеологию и их можно вписать в иерархию наследования, то в первую очередь переписать так, чтобы один базовый класс объединял в…

                    Follow us in social networks