{"id":16120677,"url":"https://github.com/django-cms/djangocms-form-builder","last_synced_at":"2025-12-14T15:31:57.795Z","repository":{"id":65349898,"uuid":"500788796","full_name":"django-cms/djangocms-form-builder","owner":"django-cms","description":"Let editors create nice forms with django CMS' frontend editor.","archived":false,"fork":false,"pushed_at":"2025-03-04T17:58:00.000Z","size":1658,"stargazers_count":16,"open_issues_count":6,"forks_count":8,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-10T11:54:40.573Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/django-cms.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.rst","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-06-07T10:14:54.000Z","updated_at":"2025-03-04T17:56:57.000Z","dependencies_parsed_at":"2023-02-17T17:30:35.347Z","dependency_job_id":"a762efce-474c-47e6-bdc1-91b4f4524ebb","html_url":"https://github.com/django-cms/djangocms-form-builder","commit_stats":{"total_commits":62,"total_committers":3,"mean_commits":"20.666666666666668","dds":0.06451612903225812,"last_synced_commit":"28acde388fed0454ecabe5cbae46654b03c0e296"},"previous_names":["django-cms/djangocms-form-builder","fsbraun/djangocms-form-builder"],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/django-cms%2Fdjangocms-form-builder","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/django-cms%2Fdjangocms-form-builder/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/django-cms%2Fdjangocms-form-builder/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/django-cms%2Fdjangocms-form-builder/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/django-cms","download_url":"https://codeload.github.com/django-cms/djangocms-form-builder/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":243807479,"owners_count":20350999,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-10-09T20:58:58.871Z","updated_at":"2025-12-14T15:31:57.784Z","avatar_url":"https://github.com/django-cms.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"########################\n django CMS form builder\n########################\n\n|pypi| |coverage| |python| |django| |djangocms|\n\n**djangocms-form-builder** supports rendering of styled forms. The objective is to tightly integrate forms in the website design. **djangocms-form-builder** allows as many forms as you wish on one page. All forms are **xhr-based**. To this end, **djangocms-form-builder** extends the django CMS plugin model allowing a form plugin to receive xhr post requests.\n\nThere are two different ways to manage forms with **djangocms-form-builder**:\n\n1. **Building a form with django CMS' powerful structure board.** This is fast an easy. It integrates smoothly with other design elements, especially the grid elements allowing to design simple responsive forms.\n\n   Form actions can be configured by form. Built in actions include saving the    results in the database for later evaluation and mailing submitted forms to   the site admins. Other form actions can be registered.\n\n2. Works with **django CMS v4+** and **djangocms-alias** to manage your forms centrally. Djangocms-alias becomes your form editor and forms can be placed on pages by referring to them with their alias.\n\n3. **Registering an application-specific form with djangocms-form-builder.** If you already have forms you may register them with djangocms-form-builder and allow editors to use them in the form plugin. If you only have simpler design requirements, **djangocms-form-builder** allows you to use fieldsets as with admin forms.\n\n**************\n Key features\n**************\n\n-  Supports `Bootstrap 5 \u003chttps://getbootstrap.com\u003e`_.\n\n-  Open architecture to support other css frameworks.\n\n-  Integrates with `django-crispy-forms \u003chttps://github.com/django-crispy-forms/django-crispy-forms\u003e`_\n\n- Integrates with `djangocms-frontend \u003chttps://github.com/django-cms/djangocms-frontend\u003e`_\n\n\nFeedback\n========\n\nThis project is in a early stage. All feedback is welcome! Please mail me at fsbraun(at)gmx.de\n\nAlso, all contributions are welcome.\n\nContributing\n============\n\nThis is a an open-source project. We'll be delighted to receive your feedback in the form of issues and pull requests. Before submitting your pull request, please review our `contribution guidelines \u003chttp://docs.django-cms.org/en/latest/contributing/index.html\u003e`_.\n\nWe're grateful to all contributors who have helped create and maintain this package. Contributors are listed at the `contributors \u003chttps://github.com/fsbraun/djangocms-form-builder/graphs/contributors\u003e`_ section.\n\n\n************\nInstallation\n************\n\nFor a manual install:\n\n- run ``pip install djangocms-form-builder``, **or**\n\n-  run ``pip install git+https://github.com/fsbraun/djangocms-form-builder@master#egg=djangocms-form-builder``\n\n-  add ``djangocms_form_builder`` to your ``INSTALLED_APPS``. (If you are using both djangocms-frontend and djangocms-form-builder, add it **after** djangocms-frontend\n\n-  run ``python manage.py migrate``\n\n*****\nUsage\n*****\n\nCreating forms using django CMS' structure board\n================================================\n\nFirst create a ``Form`` plugin to add a form. Each form created with help of the structure board needs a unique identifier (formatted as a slug).\n\nAdd form fields by adding child classes to the form plugin. Child classes can be form fields but also any other CMS Plugin. CMS Plugins may, e.g., be used to add custom formatting or additional help texts to a form.\n\nForm fields\n-----------\n\nCurrently the following form fields are supported:\n\n* CharField, EmailField, URLField\n* DecimalField, IntegerField\n* Textarea\n* DateField, DateTimeField, TimeField\n* SelectField\n* BooleanField\n\nA Form plugin must not be used within another Form plugin.\n\nActions\n-------\n\nUpon submission of a valid form actions can be performed.\n\nFour actions come with djangocms-form-builder comes with four actions built-in\n\n* **Save form submission** - Saves each form submission to the database. See the\n  results in the admin interface.\n* **Send email** - Sends an email to the site admins with the form data.\n* **Success message** - Specify a message to be shown to the user upon\n  successful form submission.\n* **Redirect after submission** - Specify a link to a page where the user is\n  redirected after successful form submission.\n\nActions can be configured in the form plugin.\n\nA project can register as many actions as it likes::\n\n    from djangocms_form_builder import actions\n\n    @actions.register\n    class MyAction(actions.FormAction):\n        verbose_name = _(\"Everything included action\")\n\n        def execute(self, form, request):\n            ...  # This method is run upon successful submission of the form\n\n\nTo add this action, might need to be added to your project only after all Django apps have loaded at startup.\nYou can put these actions in your apps models.py file. Another options is your apps, apps.py file::\n\n    from django.apps import AppConfig\n\n    class MyAppConfig(AppConfig):\n        default_auto_field = 'django.db.models.BigAutoField'\n        name = 'myapp'\n        label = 'myapp'\n        verbose_name = _(\"My App\")\n\n        def ready(self):\n            super().ready()\n\n            from djangocms_form_builder import actions\n\n            @actions.register\n            class MyAction(actions.FormAction):  # Or import from within the ready method\n                verbose_name = _(\"Everything included action\")\n\n                def execute(self, form, request):\n                    ...  # This method is run upon successful submission of the form\n                    # Process form and request data, you can send an email to the person who filled the form\n                    # Or admins though that functionality is available from the default SendMailAction\n\n\n\nUsing (existing) Django forms with djangocms-form-builder\n=========================================================\n\nThe ``Form`` plugin also provides access to Django forms if they are registered with djangocms-form-builder::\n\n    from djangocms_form_builder import register_with_form_builder\n\n    @register_with_form_builder\n    class MyGreatForm(forms.Form):\n        ...\n\nAlternatively you can also register at any other place in the code by running ``register_with_form_builder(AnotherGreatForm)``.\n\nBy default the class name is translated to a human readable form (``MyGreatForm`` -\u003e ``\"My Great Form\"``). Additional information may be added using Meta classes::\n\n    @register_with_form_builder\n    class MyGreatForm(forms.Form):\n        class Meta:\n            verbose_name = _(\"My great form\")  # can be localized\n            redirect = \"https://somewhere.org\"  # string or object with get_absolute_url() method\n            floating_labels = True  # switch on floating labels\n            field_sep = \"mb-3\"  # separator used between fields (depends on css framework)\n\nThe verbose name will be shown in a Select field of the Form plugin.\n\nUpon form submission a ``save()`` method of the form (if it has one). After executing the ``save()`` method the user is redirected to the url given in the  ``redirect`` attribute.\n\nActions are not available for Django forms. Any actions to be performed upon submission should reside in its ``save()`` method.\n\n\n.. |pypi| image:: https://badge.fury.io/py/djangocms-form-builder.svg\n   :target: http://badge.fury.io/py/djangocms-form-builder\n\n.. |coverage| image:: https://codecov.io/gh/django-cms/djangocms-form-builder/branch/main/graph/badge.svg\n   :target: https://codecov.io/gh/django-cms/djangocms-form-builder\n\n.. |python| image:: https://img.shields.io/pypi/pyversions/djangocms-form-builder\n    :alt: PyPI - Python Version\n    :target: https://pypi.org/project/djangocms-form-builder/\n\n.. |django| image:: https://img.shields.io/pypi/frameworkversions/django/djangocms-form-builder\n    :alt: PyPI - Django Versions from Framework Classifiers\n    :target: https://www.djangoproject.com/\n\n.. |djangocms| image:: https://img.shields.io/pypi/frameworkversions/django-cms/djangocms-form-builder\n    :alt: PyPI - django CMS Versions from Framework Classifiers\n    :target: https://www.django-cms.org/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdjango-cms%2Fdjangocms-form-builder","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdjango-cms%2Fdjangocms-form-builder","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdjango-cms%2Fdjangocms-form-builder/lists"}