Skip to main content

DJANGO-SWIFT-CRUD Package

Motiviation

Creating CRUD operations for Django models can often be a tedious, especially when dealing with the complexities of Class-Based Views. With the swift_crud package, we provide a streamlined solution that eliminates the need to navigate through inheritance hierarchies and override methods. Our goal is to empower developers to quickly and efficiently set up CRUD operations for any Django model with just one view class, saving valuable time and ensuring a smoother development process. Let swift_crud simplify your workflow and enhance your productivity.

Overview

The swift_crud package provides a base view class (SwiftView) and utility functions to quickly set up CRUD (Create, Read, Update, Delete) operations for any Django model with only one view class. This package aims to simplify the process by abstracting away the complexity of built-in Class-Based Views (CBVs) and the need to track the inheritance hierarchy to determine where to override methods.

The package includes several mixins to handle common tasks, such as:

  • Rendering templates
  • Managing redirects
  • Handling querysets
  • Processing forms

By utilizing these mixins, developers can easily implement CRUD functionality for their Django models without having to write boilerplate code or navigate the intricate details of the CBV.

Installation

pip install django-swift-crud

Usage

Setting Up

  1. Create your Django model:

    from django.db import models
    
    class Employee(models.Model):
        first_name = models.CharField(max_length=150)
        last_name = models.CharField(max_length=150)
        bio = models.TextField()
    
        def __str__(self):
            return f"{self.first_name} {self.last_name}"
    
  2. Define your views:

    from swift_crud.views import SwiftView
    from .models import Employee
    from .forms import EmployeeForm  # You need to create this form
    
    class EmployeeView(SwiftView):
        model = Employee
        form_class = EmployeeForm
        verbose_name = 'employee'
        verbose_name_plural = 'employees'
        template_folder = 'employees'
        redirect_url = '/employees/'
        allowed_views = ["list", "detail", "delete", "create", "update"]
    
  3. URL Configuration:

    The patterns in the (create, update, delete) URLs should contain the (create, update, 'delete) words, respectively (you can override this in the get_view_method or in the dispatch method):

    from django.urls import path
    from .views import EmployeeView
    
    urlpatterns = [
        path('employees/', EmployeeView.as_view(), name='employee_list'),
        path('employees/create/', EmployeeView.as_view(), name='employee_create'),
        path('employees/<int:pk>/', EmployeeView.as_view(), name='employee_detail'),
        path('employees/<int:pk>/update/', EmployeeView.as_view(), name='employee_update'),
        path('employees/<int:pk>/delete/', EmployeeView.as_view(), name='employee_delete'),
    ]
    

    Alternatively, you can use the generate_crud_urls function from the swift_crud.utils module:

    from django.urls import path, include
    from .views import EmployeeView
    from swift_crud.utils import generate_crud_urls
    
    urlpatterns = [
     path('', include(generate_crud_urls(EmployeeView)))
     ]
    

    You can also add custom URL patterns by passing the custom_patterns parameter to generate_crud_urls.

Create Your Own SwiftView

You can customize the SwiftView class if you want to add more features or Mixin classes, such as the LoginRequiredMixin, and reuse your custom SwiftView class.

Attributes

The SwiftView class supports the following attributes:

  • model: The model associated with this view. If not provided, the get_model method will raise a ValueError.
  • verbose_name (Optional): The context variable name for a single object. If not provided, it defaults to the model's verbose name.
  • verbose_name_plural (Optional): The context variable name for a queryset of objects. If not provided, it defaults to the model's verbose name plural.
  • template_folder: Path to the folder of your templates.
  • custom_templates (Optional): A dictionary to provide custom template paths.
  • redirect_url: The URL to redirect to.
  • queryset (Optional): The queryset to use. If not provided, self.model.objects.all() will be the query.
  • pk_url_kwarg (Optional): The URL keyword argument for the primary key.
  • paginate_by (Optional): Number of items per page for pagination.

Contributing

If you find any bugs or have feature requests, please open an issue on GitHub. Contributions are welcome!

License

This project is licensed under the MIT License. See the LICENSE file for details.

Acknowledgements

This package was inspired by the need to quickly set up CRUD operations for Django models with minimal boilerplate code. Special thanks to the Django community for their continuous support and contributions.

Metadata

Release files for django-swift-crud 0.1.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for django-swift-crud 0.1.2
File Size Uploaded Provenance
django_swift_crud-0.1.2.tar.gz 13.5 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for django-swift-crud 0.1.2
File Interpreter ABI Platform
django_swift_crud-0.1.2-py3-none-any.whl Python 3 none any Details

Total release size: 30.2 kB

Release files / django_swift_crud-0.1.2.tar.gz

Download URL django_swift_crud-0.1.2.tar.gz
Size 13.5 kB
Tags Source
SHA-256 checksum
How to use checksums
7aa00b04fca207ea1b4ba84fcdf74adcb9ad1ed081d4af20b301773b64762996
BLAKE2b-256 checksum
How to use checksums
15e1dc829252139f4f77bc2ce7a9aa2855d0a3a72375f45b9eb3287eb3db3e9c
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.19

Release files / django_swift_crud-0.1.2-py3-none-any.whl

Download URL django_swift_crud-0.1.2-py3-none-any.whl
Size 16.7 kB
Tags Python 3
SHA-256 checksum
How to use checksums
23c4e81482c5a34878eaa21a23a87bb491bc8d5a526cd671c4d7e15c7f51af0f
BLAKE2b-256 checksum
How to use checksums
10c2ba62176f3e24b180c1f50476b4108ad6558cc21a86fb0a11bde7275f20c0
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.19

Security for django-swift-crud 0.1.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Release history Release notifications | RSS feed

This release

0.1.2 This release

2 release files No provenance

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page