Skip to main content

A Django App for little HTML GUI applications, with easy Python/JS interoperation.

Project description

Django-Eel

Django-Eel is a Django App for HTML GUI applications, with easy Python/JS interoperation. It is a porting version of Eel.

Repo branches

  • master : the master branch of Django-Eel
  • eel-master : keeping sync with Eel/master

Requirements

  • Django ( >=2.0.7 recommended )
  • channels ( >=2.1.2 recommended )
  • gevent ( >=1.3.4 recommended )

Getting Started

Installation

Download Django-Eel package from GitHub and install:

python setup.py install

Or install through PIP:

pip install git+https://github.com/seLain/django-eel

Create demo project

Create an empty django project:

django-admin startproject demo

Create examples django app:

django-admin startapp example

Add channels, django_eel, and example to demo/settings.py

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'channels',
    'django_eel',
    'example',
]

Set ASGI_Application in demo/settings.py. It is required by channels.

WSGI_APPLICATION = 'demo.wsgi.application'
ASGI_APPLICATION = "demo.routing.application"

Add routine.py under demo project root. The routine.py routes websocket requests to EelConsumer.

from channels.routing import ProtocolTypeRouter, URLRouter
from django.conf.urls import url
from django_eel.consumers import EelConsumer

application = ProtocolTypeRouter({
    # (http->django views is added by default)
    "websocket": URLRouter([
        url(r"^eel$", EelConsumer), # do not alter this line
    ]),
})

Configure demo\urls.py to route http request to eel and example respectively.

urlpatterns = [
    path('admin/', admin.site.urls),
    url(r'^eel/', include('django_eel.urls')), # do not alter this line
    url(r'^example/', include('example.urls')), # set by your app name
]

That's the configuration part. Now we add a helloword example.

Create template and view

Create example\templates\example\hello.html :

<!DOCTYPE html>
<html>
    <head>
        <title>Hello, World!</title>
        
        <!-- request for eel.js from django-eel, do not alter this line -->
        <script type="text/javascript" src="/eel/eel.js"></script>
        <script type="text/javascript">
        
        eel.expose(say_hello_js);               // Expose this function to Python
        function say_hello_js(x) {
            console.log("Hello from " + x);
        }
        
        say_hello_js("Javascript World!");
        eel.say_hello_py("Javascript World!");  // Call a Python function
        
        </script>
    </head>
    
    <body>
        Hello, World!
    </body>
</html>

This hello.html is almost the same as the original Eel example, except the request for eel.js.

Then we create the view

from django.shortcuts import render
import django_eel as eel

# initialize eel
eel.init('example/templates/example')

###########################
# Hello example
###########################
def hello_page(request): # accept request for hello.html
	return render(request, 'example/hello.html')

@eel.expose
def say_hello_py(x):
	print('Hello from %s' % x)
	eel.say_hello_js('Python3 and Django World!') # call js function

###########################
# Open local browser
###########################
eel.start('example/hello', size=(300, 200)) # optional for off-line browsing

Finally, we have to set example\urls.py to handle the request to example pages.

from django.conf.urls import url

from .views import hello_page

urlpatterns = [
    url(r'^hello$', hello_page),
]

Running the demo

Simply run the django project as usual:

python manage.py runserver

A browser windows should popup if this line is added in view.

eel.start('example/hello', size=(300, 200))

You can also access the hello example by browser:

http://localhost:8000/example/hello

That's it. All behaviors are basically the same as the original Eel.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django-eel-0.11.tar.gz (9.3 kB view details)

Uploaded Source

File details

Details for the file django-eel-0.11.tar.gz.

File metadata

  • Download URL: django-eel-0.11.tar.gz
  • Upload date:
  • Size: 9.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for django-eel-0.11.tar.gz
Algorithm Hash digest
SHA256 6a14a06829a03435a8200f0583dc7024d223e222b1d65a1c1a6cdd13dfec2c54
MD5 fd7332449238dc056da3ef6dd8cfac6c
BLAKE2b-256 f1891db67060013e9c865e0e2f5f7dd5ef033016e7a5c0275591c97b01ed12f6

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page