用Django×Electron无法开发桌面应用程序吗?

首先

    • Django

 

    Electron

Django是一种用于开发Python Web应用程序的Web框架。
Electron是一种可以使用Web技术制作桌面应用程序的引擎。

简而言之,使用 Django × Electron 可以创建“基于 Python 的桌面应用程序”!

那样的…我做了个梦。

    Is it a good idea to use Django in making a desktop app? How difficult is it?

好像不太好。
怪不得搜索「Django Electron」或者「Django桌面应用程序」都找不到热门文章。

    DJANGO Y ELECTRON PARA APLICACIONES MULTIPLATAFORMA

大致上有一篇正在实践的文章。

既然这么辛苦,我试着在代码中加上注释。

// electron モジュールのインポート
const electron = require('electron');
const app = electron.app;
const BrowserWindow = electron.BrowserWindow;
let mainWindow;

// アプリケーションウィンドウを閉じたときの処理
app.on('window-all-closed', function () {
    // アプリケーションを終了する
    app.quit();
});

// アプリケーション起動時の処理
app.on('ready', function () {
    // child_process で python コマンドを実行する
    // jdango サーバー起動のコマンド【$ python manage.py runserver】
    var subpy = require('child_process').spawn('python', ['./manage.py', 'runserver']);
    // サーバーのアクセスURL
    var mainAddr = 'http://localhost:8000/';

    // request-promise モジュールのインポート
    var rq = require('request-promise');

    // ウィンドウ起動時の設定処理
    var openWindow = function () {
        // ウィンドウサイズなどの設定
        mainWindow = new BrowserWindow({ width: 800, height: 600 });
        // 読み込むURLを指定
        mainWindow.loadURL(mainAddr);

        // ウィンドウを閉じたときのイベント
        mainWindow.on('closed', function () {
            mainWindow = null;
            // child_process を終了する
            subpy.kill('SIGINT');
        });
    };

    // 起動処理
    var startUp = function () {
        // 読み込み終了待ち
        rq(mainAddr)
            // 読み込み完了したら……
            .then(function (htmlString) {
                console.log('server started');
                // ウィンドウを起動
                openWindow();
            })
            .catch(function (err) {
                // 404エラーとかだと、ここで無限ループして終わらない
                // だが、正常時にも何度かこのブロックを通る(なぜ?)
                startUp();
            });
    };

    // 起動
    startUp();
});

问题点

    1. 在执行期间,即使在浏览器中也可以访问 http://localhost:8000 。

 

    1. 在Windows环境中,即使关闭应用程序,服务器也不会关闭。(无法结束子进程)

 

    启动速度很慢。

说起来,在仅使用Django×Electron进行开发会有一些难题的印象。

Django×Electron 的开发方式

暂时来说,没有不能做到的事情。

    Pythonでデスクトップアプリを作る with Electron

只需要一个选项,用中文进行释义:只要将本文和上述的入口JS文件结合起来,将Electron投入Django的项目文件夹即可。

Django桌面应用程序。

为什么即使不仅仅限于Electron,还有人想尝试使用Django来开发桌面应用,却很难找到相关的文章呢?难道说Django在桌面应用方面确实不太兼容?

我对此并不完全理解……orz

Django制作桌面应用的最佳方案是什么?

    • Building Future Web Apps With JavaScript and Django

 

    Django REST Framework の使い方メモ

经过各种调查研究,发现有一种方法可以使用Django创建API,并负责Web应用的后端(使用Django REST Framework可以更轻松地创建API)。

总之……

    • React(フロントエンド)

 

    • Django + REST Framework(バックエンド)

 

    Electron(Web アプリをデスクトップアプリ化)

这个组合是最佳解决方案吗?

积弊已久

不过,如果使用 React×Electron ,最好也加入 Webpack 和 Babel……

React × Webpack × Babel × Django × Rest Framework × Electron 的中文版本:

React × Webpack × Babel × Django × Rest Framework × Electron

变得高傲自大。

文献引用

    • Is it a good idea to use Django in making a desktop app? How difficult is it?

 

    • Building Future Web Apps With JavaScript and Django

 

    • Django REST Framework の使い方メモ

 

    • DJANGO Y ELECTRON PARA APLICACIONES MULTIPLATAFORMA

 

    • bottle×Electronで簡単!PythonのGUIアプリ開発

 

    Pythonでデスクトップアプリを作る with Electron
广告
将在 10 秒后关闭
bannerAds