Vistas

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