Ну ...
Я решил свою проблему. С гораздо меньшим количеством крови, чем ожидалось, что я счастлив. :)
Сначала я установил Electron и один из минимальных шаблонов в новую папку в моем проекте.
В шаблоне есть файл с именем main.js
(или index.js
, зависит от шаблон), который определяет окно приложения Electron и его содержимое. Внутри находится строка, которая загружает содержимое в объект Electron BrowserWindow
:
mainWindow.loadFile(path.join(__dirname, 'index.html'));
К счастью, у объекта BrowserWindow
есть метод loadURL
, который можно использовать для загрузки веб-страницы вместо локального html файла:
mainWindow.loadURL('http://127.0.0.1:8000');
Это означает, что все страницы, отображаемые с помощью Django, будут отображаться в браузере Electron, который запускает node.js вместо стандартного механизма браузера javascript. Таким образом, этот код в шаблоне страницы Django будет отлично работать:
<h1 id="holder">DROP FILES HERE</h1>
<p id="dropped"></p>
<script>
const dropZone = document.getElementById('holder');
dropZone.addEventListener('drop', (e) => {
e.preventDefault();
e.stopPropagation();
let filesList = '\n';
for (const f of e.dataTransfer.files) filesList += f.path + '\n';
document.getElementById('dropped').innerHTML = `Full file paths: ${filesList}`;
});
dropZone.addEventListener('dragover', (e) => {
e.preventDefault();
e.stopPropagation();
});
</script>