/django-hogwarts

Django CRUD codegenerator

Primary LanguagePython

Django hogwarts 🧙‍♂️

Management commands to generate views, urls and templates

Use CLI commands to generate:

  • basic create, update, list, detail views
  • urlpatterns from views with REST like path urls
  • form, table, detail templates (Bootstrap and django-crispy-forms by default)

all commands will respect (will not change) existing code


Installation

# pip
pip install django-hogwarts

# poetry
poetry add django-hogwarts

add hogwarts to your INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    "hogwarts"
]

Usage

Check this to know what urls will be generated

Generate urls.py

Generates paths for views from views.py

python manage.py genurls <your-app-name>

Arguments:

  • --force-app-name, fan override app_name variable in urls.py
  • --override, -o fully overrides existing code in urls.py (previous code will be deleted)
  • --single-import, -s instead of importing individual view, imports just modulefrom . import views

Generate views.py

Generates create, update, detail, list views for model. Checkout the demo

python manage.py genviews <your-app-name> <model-name>

Arguments

  • --smart-mode, -s adds login required, sets user for CreateView and checks if client is owner of object in UpdateView
  • --model-is-namespace, -mn adds success_url with name model as namespace
  • --file, -f specify view file (example: "views/posts_view.py" or "new_views.py") in your app

Generate tests.py

It generates tests from urls.py for CRUD generic views only

python manage.py gentests <your-app-name>

Generate templates

Generates templates from template_names from views from given app

django-crispy-forms and crispy-bootstrap5 packages are required

python manage.py gentemplates <your-app-name>

Want to create own scaffolding templates?

  1. create folder, copy and customize from this templates
  2. add that folder to setting HOGWARTS_SCAFFOLD_FOLDER = "<your-folder>"

Scaffolding

Generates views, urls and templates for given app (every model in app)

python manage.py scaffold <your-app-name>

Roadmap

  • tests generator
  • maybe rest-framework support (let me know in issues)

Development

Before all create config folder and copy everything from example_config to config folder