Awesome
<img src="https://raw.githubusercontent.com/reactive-python/reactpy/main/branding/svg/reactpy-logo-square.svg" align="left" height="45"/> ReactPy-Django
<p> <a href="https://github.com/reactive-python/reactpy-django/actions?query=workflow%3ATest"> <img src="https://github.com/reactive-python/reactpy-django/workflows/Test/badge.svg?event=push"> </a> <a href="https://pypi.python.org/pypi/reactpy-django"> <img src="https://img.shields.io/pypi/v/reactpy-django.svg?label=PyPI"> </a> <a href="https://github.com/reactive-python/reactpy-django/blob/main/LICENSE.md"> <img src="https://img.shields.io/badge/License-MIT-purple.svg"> </a> <a href="https://reactive-python.github.io/reactpy-django/"> <img src="https://img.shields.io/website?down_message=offline&label=Docs&logo=read%20the%20docs&logoColor=white&up_message=online&url=https%3A%2F%2Freactive-python.github.io%2Freactpy-django%2F"> </a> <a href="https://discord.gg/uNb5P4hA9X"> <img src="https://img.shields.io/discord/1111078259854168116?label=Discord&logo=discord"> </a> </p>ReactPy-Django is used to add ReactPy support to an existing Django project. This package also turbocharges ReactPy with features such as...
- SEO compatible rendering
- Client-Side Python components
- Single page application (SPA) capabilities
- Distributed computing
- Performance enhancements
- Customizable reconnection behavior
- Customizable disconnection behavior
- Multiple root components
- Cross-process communication/signaling (Channel Layers)
- Django view to ReactPy component conversion
- Django static file access
- Django database access
What is ReactPy?
ReactPy is a library for building user interfaces in Python without Javascript. ReactPy interfaces are made from components that look and behave similar to those found in ReactJS. Designed with simplicity in mind, ReactPy can be used by those without web development experience while also being powerful enough to grow with your ambitions.
<table align="center"> <thead> <tr> <th colspan="2" style="text-align: center">Supported Backends</th> <tr> <th style="text-align: center">Built-in</th> <th style="text-align: center">External</th> </tr> </thead> <tbody> <tr> <td> <a href="https://reactpy.dev/docs/guides/getting-started/installing-reactpy.html#officially-supported-servers"> Flask, FastAPI, Sanic, Tornado </a> </td> <td> <a href="https://github.com/reactive-python/reactpy-django">Django</a>, <a href="https://github.com/reactive-python/reactpy-jupyter">Jupyter</a>, <a href="https://github.com/idom-team/idom-dash">Plotly-Dash</a> </td> </tr> </tbody> </table>At a Glance
my_app/components.py
<!--py-header-start-->
You will need a file to define your ReactPy components. We recommend creating a components.py
file within your chosen Django app to start out. Within this file, we will create a simple hello_world
component.
from reactpy import component, html
@component
def hello_world(recipient: str):
return html.h1(f"Hello {recipient}!")
<!--py-code-end-->
my_app/templates/my_template.html
<!--html-header-start-->
In your Django app's HTML template, you can now embed your ReactPy component using the component
template tag. Within this tag, you will need to type in the dotted path to the component.
Additionally, you can pass in args
and kwargs
into your component function. After reading the code below, pay attention to how the function definition for hello_world
(from the previous example) accepts a recipient
argument.
{% load reactpy %}
<!DOCTYPE html>
<html>
<body>
{% component "example_project.my_app.components.hello_world" recipient="World" %}
</body>
</html>
<!--html-code-end-->
Resources
Follow the links below to find out more about this project.