Skip to main content

DynamicForms performs all the visualisation & data entry of your DRF Serializers & ViewSets and adds some candy of its own

Project description

Notice to users of this library

Releases 0.50.x and 0.70.x are interim releases with which we prepare the stage for 1.x release.

0.50.x moves all "existing" code to dynamicforms_legacy module. If you weren't following vue development branches, you will need to change all imports in python to this "new" module.

This is done to keep legacy code still running as existing code is transitioned to vue-based approach. Unless there is significant interest, we will remove this module with 1.x release.

0.70.x re-introduces dynamicforms module, but this time refactored to only provide .componentdef OPTIONS + payload data responses needed by the vue front-end library. This will hopefully be refactored to be more OpenAPI compatible. The new primary branch is now main.

HTML renderers will no longer be supported and have been removed from the "new" dynamicforms module. It was too slow and required too many hacks to remain viable. So we moved to Vue. The components in 0.70 will be vue3, vuetify3, vite and typescript-compatible. We're in final stages of adapting to the new stack. Some inputs and some table functionality isn't working yet.

We're keeping the Bootstrap stubs too, but not actively developing to support seamless selection of the two frameworks. If there is interest to support CSS frameworks other than Vuetify, pull requests welcome. Hopefully the stubs should point the way on how to do it.

Migration path is thus:

  • Upgrade to dynamicforms >= 0.50.3

  • replace all dynamicforms imports with dynamicforms_legacy

  • because of the rename, there is a bit of work required in settings.py so that Django can find the templates and filters:

    ``` python
    from dynamicforms_legacy import __file__ as DYNAMICFORMS_BASEDIR_FILE
    DYNAMICFORMS_BASEDIR = os.path.dirname(DYNAMICFORMS_BASEDIR_FILE)
    ...
    INSTALLED_APPS = [
      ...
      'dynamicforms_legacy'
    
    TEMPLATES = [
       ...
            'DIRS': [
                os.path.join(DYNAMICFORMS_BASEDIR, 'templates'),
       ...
            'OPTIONS': {
       ...
                'libraries': {
                    'dynamicforms': 'dynamicforms_legacy.templatetags.dynamicforms',
                }
    STATICFILES_DIRS = [
        ...
        os.path.join(DYNAMICFORMS_BASEDIR, 'static'),
    ]
    ```
    
  • replace any javascript dynamicforms progress calls with progress-legacy

  • all other javascript code remains the same (including the dynamicforms object with support functions)

  • check that everything still works

  • Upgrade dynamicforms to >= 0.70.1

  • Start migration to Vue front-end and the new backend

What is DynamicForms?

DynamicForms wants to eliminate HTML form boilerplate for generic tables & forms. Specifying a single DRF Serializer / ViewSet and possibly desired form layout instantly provides both HTML renders and JSON renders (and anything else DRF supports) keeping you free to implement your project.

There are two parts to DanymicForms:

  • Django / DRF extensions providing the JSON definitions for on-screen objects
  • HTML / Javascript component library providing the visualisation

It performs all the visualisation & data entry of your DRF Serializers & ViewSets and adds some candy of its own: It is a django library that gives you the power of dynamically-shown form fields, autofilled default values, dynamic record loading and similar candy with little effort. To put it differently: once defined, a particular ViewSet / Serializer can be rendered in multiple ways allowing you to perform viewing and authoring operations on the data in question.

It is based on django-rest-framework

Documentation on readthedocs

Why DynamicForms

  • Turn your rest-framework ViewSets into HTML tables & forms
  • Powerful HTML based CRUD
    • Support for fetching "new" records
    • Render to table, form or dialog, with plenty of customisation options
    • Full nested data support
    • Dynamically display & hide fields based on other fields' values
    • Easily add actions and place the buttons to execute them anywhere you like
  • Clear separation of list & dialog templates
  • Dynamic loading of additional records for table views supported by infinite scroll
  • Responsive tables (multiple table layouts for various screen widths)
  • Easy implementation of filtering
  • Action items, declared globally, placed where you need them
  • Custom templates whenever & wherever you want them
  • Support for form validation, will show errors even if they are not tied to a field
  • Progress dialog for long lasting ajax operations

Project details


Release history Release notifications | RSS feed

Download files

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

Source Distribution

dynamicforms-0.76.17.tar.gz (1.8 MB view details)

Uploaded Source

Built Distribution

dynamicforms-0.76.17-py3-none-any.whl (1.8 MB view details)

Uploaded Python 3

File details

Details for the file dynamicforms-0.76.17.tar.gz.

File metadata

  • Download URL: dynamicforms-0.76.17.tar.gz
  • Upload date:
  • Size: 1.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.1 CPython/3.11.2

File hashes

Hashes for dynamicforms-0.76.17.tar.gz
Algorithm Hash digest
SHA256 a2163c0192a82a784f7b7a095d6b5947e7876279b5895a4ec7397bcec8264418
MD5 0cd017258c4b20388e814f4ffe2301cb
BLAKE2b-256 124b52397a933521a6336a77cf953f64e0a25c8e2e128738a8de513c5050d02b

See more details on using hashes here.

File details

Details for the file dynamicforms-0.76.17-py3-none-any.whl.

File metadata

File hashes

Hashes for dynamicforms-0.76.17-py3-none-any.whl
Algorithm Hash digest
SHA256 7a9ed0a9bdb3181eb716f9d6f29ca8a3cf647cdacd20aba3c7ce7f6a7c97efc3
MD5 7b3bec75e6c919d879ddb587294a7613
BLAKE2b-256 a780f293d2313f677be891d32877f4e9785a22bf3d979eb50d5c6d7b3bee901f

See more details on using hashes here.

Supported by

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