reactive-python / reactpy-django

It's React, but in Python. Now with Django integration.
https://reactive-python.github.io/reactpy-django/
MIT License
329 stars 18 forks source link

`django_form` component #36

Open Archmonger opened 2 years ago

Archmonger commented 2 years ago

Old Behavior

Currently, there is no existing way to easily utilize Django Forms (and django-crispy-forms) within ReactPy.

A lot of Django users have the expectation that they can use battle-tested form validation, so this is an important feature.

Implementation Details

Create a reactpy_django.components.django_form that calls Form.render(), then use html_to_vdom to convert into a ReactPy component.

By default, django_form should intercept the on_submit event for html.form to perform Django validation.

@component
def my_component():
    return html.div(
        django_form(MyDjangoForm),
    )

We might need to be extra attentive towards some custom form fields, such as django-colorfield and django-ace, which utilize script tags directly within the form body.

Additionally, some anchor link buttons, such as those within django-crispy-forms, may require special attention as well. For example, should we automatically use reactpy_router to intercept these links? This automatic behavior might need to be a configurable setting within the component.

Archmonger commented 9 months ago

Blocked on