An open API service providing repository metadata for many open source software ecosystems.

GitHub / reactive-python / reactpy-django

It's React, but in Python. Now with Django integration.

JSON API: http://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/reactive-python%2Freactpy-django
PURL: pkg:github/reactive-python/reactpy-django

Stars: 351
Forks: 23
Open issues: 18

License: mit
Language: Python
Size: 4.27 MB
Dependencies parsed at: Pending

Created at: over 4 years ago
Updated at: about 1 month ago
Pushed at: 5 months ago
Last synced at: 21 days ago

Topics: django, html, python, react, reactjs, reactpy

Funding Links https://github.com/sponsors/archmonger

Releases
5.2.1

5.2.1

Changed

  • Use the latest version of @reactpy/client which includes a fix for needless client-side component re-creation.
10 months ago
Download
5.2.0

5.2.0

Added

  • User login/logout features!
    • reactpy_django.hooks.use_auth to provide persistent login and logout functionality to your components.
    • settings.py:REACTPY_AUTH_TOKEN_MAX_AGE to control the maximum seconds before ReactPy’s login token expires.
    • settings.py:REACTPY_CLEAN_AUTH_TOKENS to control whether ReactPy should clean up expired authentication tokens during automatic cleanups.
  • Automatically convert Django forms to ReactPy forms via the new reactpy_django.components.django_form component!
  • The ReactPy component tree can now be forcibly re-rendered via the new reactpy_django.hooks.use_rerender hook.

Changed

  • Refactoring of internal code to improve maintainability. No changes to publicly documented API.

Fixed

  • Fixed bug where pre-rendered components could generate a SynchronousOnlyOperation exception if they access a freshly logged out Django user object.
11 months ago
Download
5.1.1

5.1.1

Fixed

  • Fixed regression in v5.1.0 where components would sometimes not output debug messages when settings.py:DEBUG is enabled.

Changed

  • Set upper limit on ReactPy version to <2.0.0.
  • ReactPy web modules are now streamed in chunks.
  • ReactPy web modules are now streamed using asynchronous file reading to improve performance.
  • Performed refactoring to utilize ruff as this repository’s linter.
12 months ago
Download
5.1.0

5.1.0

Added

  • settings.py:REACTPY_ASYNC_RENDERING to enable asynchronous rendering of components.

Changed

  • Bumped the minimum ReactPy version to 1.1.0.
12 months ago
Download
5.0.0

5.0.0

Changed

  • Now using ReactPy-Router v1 for URL routing, which comes with a slightly different API than before.
  • Removed dependency on aiofile.

Removed

  • Removed the following deprecated features:
    • The compatibility argument on reactpy_django.components.view_to_component
    • reactpy_django.components.view_to_component usage as a decorator
    • reactpy_django.decorators.auth_required
    • reactpy_django.REACTPY_WEBSOCKET_PATH
    • settings.py:REACTPY_WEBSOCKET_URL
about 1 year ago
Download
4.0.0

4.0.0

Added

  • Client-side Python components can now be rendered via the new {% pyscript_component %} template tag
    • You must first call the {% pyscript_setup %} template tag to load PyScript dependencies
  • Client-side components can be embedded into existing server-side components via reactpy_django.components.pyscript_component.
  • Tired of writing JavaScript? You can now write PyScript code that runs directly within client browser via the reactpy_django.html.pyscript element.
    • This is a viable substitution for most JavaScript code.

Changed

  • New syntax for use_query and use_mutation hooks. Here’s a quick comparison of the changes:

    query = use_query(QueryOptions(thread_sensitive=True), get_items, foo="bar") # Old
    query = use_query(get_items, {"foo":"bar"}, thread_sensitive=True) # New
    
    mutation = use_mutation(MutationOptions(thread_sensitive=True), remove_item) # Old
    mutation = use_mutation(remove_item, thread_sensitive=True) # New
    

Removed

  • QueryOptions and MutationOptions have been removed. The value contained within these objects are now passed directly into the hook.

Fixed

  • Resolved a bug where Django-ReactPy would not properly detect settings.py:DEBUG.
over 1 year ago
Download
3.8.1

3.8.1

Added

  • Python 3.12 compatibility
over 1 year ago
Download
3.8.0

3.8.0

Added

  • Built-in cross-process communication mechanism via the reactpy_django.hooks.use_channel_layer hook.
  • Access to the root component’s id via the reactpy_django.hooks.use_root_id hook.
  • More robust control over ReactPy clean up tasks!
    • settings.py:REACTPY_CLEAN_INTERVAL to control how often ReactPy automatically performs cleaning tasks.
    • settings.py:REACTPY_CLEAN_SESSIONS to control whether ReactPy should clean up expired sessions during automatic cleanups.
    • settings.py:REACTPY_CLEAN_USER_DATA to control whether ReactPy should clean up orphaned user data during automatic cleanups.
    • python manage.py clean_reactpy command to manually perform ReactPy clean up tasks.

Changed

  • Simplified code for cascading deletion of user data.
over 1 year ago
Download
3.7.0

3.7.0

Added

  • An “offline component” can now be displayed when the client disconnects from the server.
  • URL router now supports a * wildcard to create default routes.
almost 2 years ago
Download
3.6.0

3.6.0

Added

  • Built-in Single Page Application (SPA) support!
    • reactpy_django.router.django_router can be used to render your Django application as a SPA.
  • SEO compatible rendering!
    • settings.py:REACTPY_PRERENDER can be set to True to make components pre-render by default.
    • Or, you can enable it on individual components via the template tag: {% component "..." prerender="True" %}.
  • New view_to_iframe feature!
    • reactpy_django.components.view_to_iframe uses an <iframe> to render a Django view.
    • reactpy_django.utils.register_iframe tells ReactPy which views view_to_iframe can use.
  • New Django User related features!
    • reactpy_django.hooks.use_user can be used to access the current user.
    • reactpy_django.hooks.use_user_data provides a simplified interface for storing user key-value data.
    • reactpy_django.decorators.user_passes_test is inspired by the equivalent Django decorator, but ours works with ReactPy components.
    • settings.py:REACTPY_AUTO_RELOGIN will cause component WebSocket connections to automatically re-login users that are already authenticated. This is useful to continuously update last_login timestamps and refresh the Django login session.

Changed

  • Renamed undocumented utility function ComponentPreloader to RootComponentFinder.
  • It is now recommended to call as_view() when using view_to_component or view_to_iframe with Class Based Views.
  • For thread safety, thread_sensitive=True has been enabled in all sync_to_async functions where ORM queries are possible.
  • reactpy_django.hooks.use_mutation now has a __call__ method. So rather than writing my_mutation.execute(...), you can now write my_mutation(...).

Deprecated

  • The compatibility argument on reactpy_django.components.view_to_component is deprecated.
    • Use view_to_iframe as a replacement.
  • reactpy_django.components.view_to_component usage as a decorator is deprecated.
    • Check the docs on how to use view_to_component as a function instead.
  • reactpy_django.decorators.auth_required is deprecated.
    • Use reactpy_django.decorators.user_passes_test instead.
    • An equivalent to auth_required’s default is @user_passes_test(lambda user: user.is_active).
almost 2 years ago
Download