Unlike other web frameworks, JustPy has no front-end/back-end distinction. All programming is done on the back-end allowing a simpler, more productive, and more Pythonic web development experience. JustPy removes the front-end/back-end distinction by intercepting the relevant events on the front-end and sending them to the back-end to be processed.
The best way to understand JustPy is to follow the tutorial in which there are many examples.
In JustPy, elements on the web page are instances of component classes. A component in JustPy is a Python class that allows you to instantiate reusable custom elements whose functionality and design is encapsulated away from the rest of your code.
Custom components can be created using other components as building blocks. Out of the box, JustPy comes with support for HTML and SVG components as well as more complex components such as charts and grids. It also supports most of the components and the functionality of the Quasar library of Material Design 2.0 components.
JustPy encourages creating your own components and reusing them in different projects (and, if applicable, sharing these components with others).
JustPy integrates nicely with pandas and simplifies building web sites based on pandas analysis. JustPy comes with a pandas extension that makes it simple to create interactive charts and grids from pandas data structures.
Hopefully, JustPy will enable teaching web development in introductory Python courses by reducing the complexity of web development.
import justpy as jp def hello_world(): wp = jp.WebPage() d = jp.Div(text='Hello world!') wp.add(d) return wp jp.justpy(hello_world)
The program above activates a web server that returns a web page with 'Hello world!' for any request. Locally, you would direct your browser to http://127.0.0.1:8000 or http://localhost:8000/ to see the result.
Here is a slightly modified version in which 'Hello world!' changes to 'I was clicked!' when it is clicked.
import justpy as jp def my_click(self, msg): self.text = 'I was clicked!' def hello_world(): wp = jp.WebPage() d = jp.Div(text='Hello world!') d.on('click', my_click) wp.add(d) return wp jp.justpy(hello_world)
Under the Hood¶
JustPy's backend is built using:
- starlette - "a lightweight ASGI framework/toolkit, which is ideal for building high performance asyncio services".
- uvicorn - "a lightning-fast ASGI server, built on uvloop and httptools".
JustPy's frontend (which is transparent to JustPy developers) is built using:
The way JustPy removes the frontend/backend distinction is by intercepting the relevant events on the frontend and sending them to the backend to be processed.
News and Updates¶
For news and updates please follow the JustPy Twitter account
Copyright (c) 2019, 2020, Eliezer Mintz