Skip to content

Instantly share code, notes, and snippets.

@Marceloromeugoncalves
Created September 9, 2021 17:25
Show Gist options
  • Save Marceloromeugoncalves/1ef6f50f0fd71d06d8843752e3bd1000 to your computer and use it in GitHub Desktop.
Save Marceloromeugoncalves/1ef6f50f0fd71d06d8843752e3bd1000 to your computer and use it in GitHub Desktop.
#Django Automatic CRUD.
#Instalação: pip install django-automatic-crud
#Verificação das dependências: pip freeze.
"""
asgiref==3.4.1
Django==3.2.7
django-automatic-crud==1.2.0
et-xmlfile==1.1.0
openpyxl==3.0.7
pytz==2021.1
sqlparse==0.4.1
"""
#Criação do projeto Django.
#django-admin startproject project
#cd project para navegar para a pasta do projeto.
#Em settings.py adicionar automatic_crud no INSTALLED_APPS.
INSTALLED_APPS = [
#...
'automatic_crud',
]
#Criação dos modelos.
#Para criar os modelos precisamos criar uma aplicação.
#django-admin startapp products
#Adicionar o app products no INSTALLED_APPS.
INSTALLED_APPS = [
#...
'automatic_crud',
'products',
]
#Criação dos models.
#models.py
from django.db import models
from automatic_crud.models import BaseModel
"""
Campos extras que são criados nas classes que herdam de BaseModel:
- id
- model_state
- date_created
- date_modified
- date_deleted
model_state é usado dentro do Django Automatic CRUD para a exclusão lógica.
"""
class Category(BaseModel):
#Nome da categoria.
name = models.CharField("Categoria", max_length=50)
class Meta:
#Nome no singular.
verbose_name = 'Category'
#Nome no plural.
verbose_name_plural = 'Categories'
#String que representará a instância do objeto.
def __str__(self):
return self.name
#Geração de CRUDS Automáticos.
#project => urls.py
from django.contrib import admin
from django.urls import path
from django.urls import include
urlpatterns = [
#Rota para a Administração do Django.
path('admin/', admin.site.urls),
#Configuração necessária para geração dos CURD's automáticos.
path('automatic-curd/', include('automatic_crud.urls')),
]
#Aplicando as migrações.
#python manage.py makemigrations
#python manage.py migrate
"""
Auto tentar acessar: http://127.0.0.1:8000/automatic-crud/
admin/
automatic-crud/products/category/list/ [name='products-category-list']
automatic-crud/products/category/create/ [name='products-category-create']
automatic-crud/products/category/detail/<int:pk>/ [name='products-category-detail']
automatic-crud/products/category/update/<int:pk>/ [name='products-category-update']
automatic-crud/products/category/logic-delete/<int:pk>/ [name='products-category-logic-delete']
automatic-crud/products/category/direct-delete/<int:pk>/ [name='products-category-direct-delete']
automatic-crud/products/category/excel-report/ [name='products-category-excel-report']
automatic-crud/ajax-products/category/list/ [name='products-category-list-ajax']
automatic-crud/ajax-products/category/create/ [name='products-category-create-ajax']
automatic-crud/ajax-products/category/detail/<int:pk>/ [name='products-category-detail-ajax']
automatic-crud/ajax-products/category/update/<int:pk>/ [name='products-category-update-ajax']
automatic-crud/ajax-products/category/logic-delete/<int:pk>/ [name='products-category-logic-delete-ajax']
automatic-crud/ajax-products/category/direct-delete/<int:pk>/ [name='products-category-direct-delete-ajax']
automatic-crud/ajax-products/category/excel-report/ [name='products-category-excel-report-ajax']
"""
#Configurando a pasta de templates.
TEMPLATES = [
#...
'DIRS': ['templates'],
#...
]
#Tendo as rotas criadas de forma automática, basta irmos criando os templates.
"""
Tipos de Exclusão
- Lógica - O registro é apenas marcado como excluído.
- Direta - O registro é efetivamente excluído do banco de dados.
"""
@Marceloromeugoncalves
Copy link
Author

Diretório templates em destaque:
image
templates => app_name => HTML files.
image

@Marceloromeugoncalves
Copy link
Author

Marceloromeugoncalves commented Sep 9, 2021

Django Automatic CRUD.

O primeiro passo é criarmos a pasta do projeto e ativarmos o Virtual Environment. Daí, devemos abrir o terminal na pasta criada e instalar a dependência para o Django Automatic CRUD. Para instalar a dependência via pip temos que executar o comando pip install django-automatic-crud. Após a instalação poderemos verificar as dependências do projeto com o comando pip freeze, que irá listar as seguintes dependências:

asgiref==3.4.1
Django==3.2.7
django-automatic-crud==1.2.0
et-xmlfile==1.1.0
openpyxl==3.0.7
pytz==2021.1
sqlparse==0.4.1

Campos extras que são criados nas classes que herdam de BaseModel:

  • id
  • model_state
  • date_created
  • date_modified
  • date_deleted

O campo model_state é usado dentro do Django Automatic CRUD para a exclusão lógica.

Rotas do Django Automatic CRUD:

automatic-crud/products/category/list/ [name='products-category-list']
automatic-crud/products/category/create/ [name='products-category-create']
automatic-crud/products/category/detail/<int:pk>/ [name='products-category-detail']
automatic-crud/products/category/update/<int:pk>/ [name='products-category-update']
automatic-crud/products/category/logic-delete/<int:pk>/ [name='products-category-logic-delete']
automatic-crud/products/category/direct-delete/<int:pk>/ [name='products-category-direct-delete']
automatic-crud/products/category/excel-report/ [name='products-category-excel-report']
automatic-crud/ajax-products/category/list/ [name='products-category-list-ajax']
automatic-crud/ajax-products/category/create/ [name='products-category-create-ajax']
automatic-crud/ajax-products/category/detail/<int:pk>/ [name='products-category-detail-ajax']
automatic-crud/ajax-products/category/update/<int:pk>/ [name='products-category-update-ajax']
automatic-crud/ajax-products/category/logic-delete/<int:pk>/ [name='products-category-logic-delete-ajax']
automatic-crud/ajax-products/category/direct-delete/<int:pk>/ [name='products-category-direct-delete-ajax']
automatic-crud/ajax-products/category/excel-report/ [name='products-category-excel-report-ajax']

Tipos de Exclusão

  • Lógica - O registro é apenas marcado como excluído.
  • Direta - O registro é efetivamente excluído do banco de dados.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment