Vistas Estáticas:
from django.views.generic import TemplateView
class VistaEstatica(TemplateView):
template_name = "vista.html"
Listado de Objetos
from django.views.generic import ListView
from app.models import MiModelo
class MiModeloListView(ListView):
model = MiModelo
# template_name = "app/mimodelo_list.html" -> lista de objetos: object_list
# context_object_name = "object_list"
# queryset = MiModelo.objects.order_by("campo")
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context["var_context"] = valor
return context
def get_queryset(self):
return MiModelo.objects.filter(campo=self.kwargs["valor_filtro"])
# es posible usar self.request.user
Detalle de objeto
from django.views.generic import DetailView
from app.models import MiModelo
class MiModeloDetailView(DetailView):
queryset = MiModelo.objects.all()
# template_name = "app/mimodelo_detail.html"
def get_object(self):
obj = super().get_object()
# actualizaciones a obj
obj.save()
return obj
# La configuracion de URL utiliza pk para encontrar el valor de la llave primaria
Creación, Edición y Actualización
from django.urls import reverse_lazy
from django.views.generic.edit import CreateView, DeleteView, UpdateView
from app.models import MiModelo
class MiModeloCreateView(CreateView):
model = MiModelo
# fields = ["campo1", "campo2", ...]
# form_class = clase_frm
# template_name = "app/mimodelo_form.html"
class MiModeloUpdateView(UpdateView):
model = MiModelo
# fields = ["campo1", "campo2", ...]
# form_class = clase_frm
# template_name = "app/mimodelo_form.html"
class MiModeloDeleteView(DeleteView):
model = MiModelo
success_url = reverse_lazy("mimodelo-list")
# template_name = "app/mimodelo_confirm_delete.html