A simple Django CRUD builder
Project description
django-crudbuilder
Generic CRUD implementation in Django which uses django tables2 to list objects.
Documentation
https://django-crudbuilder.readthedocs.org/en/latest/index.html
Features:
Generates class based views for CRUD
Uses django-tables2 to display objects in ListView
Allows custom forms/tables as additional arguments
Context provides additional template variables APP_LABEL and MODEL for all CRUD templates
Enable/disable login required option for CRUD views
Enable/disable permission required option for CRUD views
All the generated views/tables/forms/url are extendable.
post_create and post_update signals to handle specific actions in Create and Update views
Add your own custom templates for List/Create/Detail/Update/Delete views
Separate CREATE and UPDATE forms
Define your own custom queryset for list view
Inline Formset support for parent child models
Default Bootstrap3 CSS
Prerequisites
Django 1.7+
Python 2.7+, 3.2+
Django Tables2
Installation
pip install django-crudbuilder
Usage
Add “crudbuilder” to INSTALLED_APPS
INSTALLED_APPS = {
...
'django_tables2',
'crudbuilder'
}
LOGIN_REQUIRED_FOR_CRUD = True/False
PERMISSION_REQUIRED_FOR_CRUD = True/False
PROJECT_NAME = 'YOUR PROJECT NAME'
Create models in yourapp/models.py
class Person(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):
return self.name
Create CRUD for Person model in yourapp/crud.py
from crudbuilder.abstract import BaseCrudBuilder
from yourapp.models import Person
class PersonCrud(BaseCrudBuilder):
model = Person
search_feilds = ['name']
tables2_fields = ('name', 'email')
tables2_css_class = "table table-bordered table-condensed"
tables2_pagination = 20 # default is 10
modelform_excludes = ['created_by', 'updated_by']
login_required=True
permission_required=True
# permissions = {
# 'list': 'example.person_list',
# 'create': 'example.person_create'
# }
Open yourapp/urls.py and add the following
urlpatterns = [
url(r'^admin/', include(admin.site.urls)),
url(r'^crud/', include('crudbuilder.urls')),
]
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 REQUIRED
To enable global login required for all the models CRUD views, add the following to settings file
LOGIN_REQUIRED_FOR_CRUD = True
If you want to enable login required only for specific model crud, then you need to add following to crud class
# myapp/crud.py login_required = True
PERMISSION REQUIRED
To enable global permission required for all the models CRUD views, add the following to settings file
PERMISSION_REQUIRED_FOR_CRUD = True
If you want to enable permission required only for specific model crud, then you need to add following to crud class
# myapp/crud.py permission_required = True
By enabling either of above flag, crudbuilder by default checks for following permissions:
- For ListView : <your app_name>.<your model>_list
- For CreateView : <your app_name>.<your model>_create
- For DetailView : <your app_name>.<your model>_detail
- For UpdateView : <your app_name>.<your model>_update
- For DeleteView : <your app_name>.<your model>_delete
If 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 VARIABLES
Added mixin which allows access to additional template variables like app lable and model name in every template.
APP : {{app_label}}
MODEL : {{actual_model_name}}
PLURIZED MODEL : {{pluralized_model_name}}
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
Hashes for django-crudbuilder-0.1.11.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | ac836410de521c34faa5ab4292fa5214c96495fb0fef41399bf42a5187dfba8c |
|
MD5 | 3fa7624e0d7d9b34a98dbe88f8689cd1 |
|
BLAKE2b-256 | 47ab4ed10efbe657e552a72b5b3358dbc97c94b63ded596c445ef6c529e66cf2 |