Package: django-crudbuilder
django-crudbuilderGeneric CRUD implementation in Django which uses django tables2 to list objects.Documentationhttps://django-crudbuilder.readthedocs.org/en/latest/index.htmlFeatures:Generates class based views for CRUDUses django-tables2 to display objects in ListViewDefine multiple crud builders for same model with separate URLAllows custom forms/tables as additional argumentsContext provides additional template variables APP_LABEL and MODEL for all CRUD templatesEnable/disable login required option for CRUD viewsEnable/disable permission required option for CRUD viewsAll the generated views/tables/forms/url are extendable.post_create and post_update signals to handle specific actions in Create and Update viewsAdd your own custom templates for List/Create/Detail/Update/Delete viewsSeparate CREATE and UPDATE formsDefine your own custom queryset for list viewInline Formset support for parent child modelsDefault Bootstrap3 CSSAll the generated views are extendable.PrerequisitesDjango 1.10+Python 2.7+, 3.3+Django Tables2 < 2.0Installationpipinstalldjango-crudbuilderUsageAdd “crudbuilder” to INSTALLED_APPSINSTALLED_APPS={...'django_tables2','crudbuilder'}LOGIN_REQUIRED_FOR_CRUD=True/FalsePERMISSION_REQUIRED_FOR_CRUD=True/FalsePROJECT_NAME='YOUR PROJECT NAME'Create models in yourapp/models.pyclassPerson(models.Model):""" an actual singular human being """name=models.CharField(blank=True,max_length=100)email=models.EmailField()created_at=models.DateTimeField(auto_now=True)created_by=models.ForeignKey(User,blank=True,null=True)def__unicode__(self):returnself.nameCreate CRUD for Person model in yourapp/crud.pyfromcrudbuilder.abstractimportBaseCrudBuilderfromyourapp.modelsimportPersonclassPersonCrud(BaseCrudBuilder):model=Personsearch_fields=['name']tables2_fields=('name','email')tables2_css_class="table table-bordered table-condensed"tables2_pagination=20# default is 10modelform_excludes=['created_by','updated_by']login_required=Truepermission_required=True# permissions = {#   'list': 'example.person_list',#       'create': 'example.person_create'# }Open yourapp/urls.py and add the followingfromcrudbuilderimporturlsurlpatterns=[url(r'^admin/',include(admin.site.urls)),url(r'^crud/',include(urls)),]View All your registered CRUDShttp://127.0.0.1:8000/crud/Now you can access the below CRUD URLS-http://127.0.0.1:8000/crud/yourappname/yourmodelname-http://127.0.0.1:8000/crud/yourappname/yourmodelname/create/-http://127.0.0.1:8000/crud/yourappname/yourmodelname/<pk>/detail/-http://127.0.0.1:8000/crud/yourappname/yourmodelname/<pk>/update/-http://127.0.0.1:8000/crud/yourappname/yourmodelname/<pk>/delete/LOGIN REQUIREDTo enable global login required for all the models CRUD views, add the following to settings fileLOGIN_REQUIRED_FOR_CRUD=TrueIf you want to enable login required only for specific model crud, then you need to add following to crud class# myapp/crud.pylogin_required=TruePERMISSION REQUIREDTo enable global permission required for all the models CRUD views, add the following to settings filePERMISSION_REQUIRED_FOR_CRUD=TrueIf you want to enable permission required only for specific model crud, then you need to add following to crud class# myapp/crud.pypermission_required=TrueBy enabling either of above flag, crudbuilder by default checks for following permissions:-ForListView:<yourapp_name>.<yourmodel>_list-ForCreateView:<yourapp_name>.<yourmodel>_create-ForDetailView:<yourapp_name>.<yourmodel>_detail-ForUpdateView:<yourapp_name>.<yourmodel>_update-ForDeleteView:<yourapp_name>.<yourmodel>_deleteIf you want to add your own permissions, then define your own permission required dictionary explicitly in CRUD class.permissions={'list':'example.permission1','create':'example.permission2''detail':'example.permission3','update':'example.permission4','delete':'example.permission5',}EXTRA TEMPLATE VARIABLESAdded mixin which allows access to additional template variables like app lable and model name in every template.APP:{{app_label}}MODEL:{{actual_model_name}}PLURIZEDMODEL:{{pluralized_model_name}}