Aprenda a crear una aplicación de administrador de tareas utilizando los principios de CRUD y las vistas basadas en clases en Django.

Una de las características clave de Django es su soporte integrado para crear proyectos además de las operaciones CRUD (Crear, Leer, Actualizar, Eliminar). Si bien las vistas basadas en clases de Django brindan una forma rápida, fácil y flexible de crear aplicaciones web, muchos desarrolladores todavía usan vistas basadas en funciones.

Las vistas basadas en clases ofrecen varios beneficios sobre las vistas basadas en funciones, incluida la herencia, la estructuración del código, la reutilización del código y más. Si bien la implementación de vistas basadas en clases puede parecer un poco compleja, esta guía lo ayudará a comprender el concepto al crear una aplicación de administración de tareas y brindar instrucciones paso a paso.

¿Qué son las vistas basadas en clases en Django?

En Django, las vistas son Funciones de Python que toman una solicitud web y devuelven una respuesta web. Las vistas basadas en clases (CBV) son una forma alternativa de definir vistas en Django utilizando clases de Python en lugar de funciones.

instagram viewer

Los CBV tienen varias ventajas, como una mejor organización del código, una reutilización más fácil del código y la capacidad de usar la herencia para crear variaciones de las vistas existentes. Los CBV también proporcionan métodos integrados, como el conseguir() y correo() métodos que puede sobrescribir para comportamientos personalizados.

El código utilizado en este artículo está disponible en este repositorio GitHub.

Vistas basadas en clases disponibles en Django

Django proporciona algunos CBV incorporados para casos de uso populares, como mostrar listas de objetos o crear otros nuevos. Algunos de estos CBV incorporados son:

  1. Vista de la lista: esta vista muestra una lista de objetos recuperados de un modelo. Por ejemplo, una página que enumera todas las publicaciones disponibles en un blog utilizará un Vista de la lista.
  2. Vista de detalles: esta vista representa una vista detallada de un solo objeto recuperado de un modelo. Puedes usar un Vista de detalles para mostrar los detalles de publicaciones específicas en una aplicación de blog.
  3. CreateView: esta vista representa un formulario para crear un nuevo objeto y maneja el envío del formulario. Por ejemplo, en una aplicación de administrador de tareas, usará esta vista para crear nuevas tareas.
  4. EliminarVer: esta vista presenta una página de confirmación para eliminar un objeto y maneja la eliminación de la página.
  5. ActualizarVista: esta vista representa un formulario para actualizar un objeto existente y maneja el envío del formulario.

Django también proporciona otras vistas, incluyendo Vista de plantilla, RedirectView, y Vista de formulario. Puedes referirte a Documentación de Django para obtener información detallada sobre las vistas basadas en clases.

Cree una aplicación de administrador de tareas con vistas basadas en clases de Django

La creación de una aplicación como una aplicación de administrador de tareas le permitirá comprender cómo implementar operaciones CRUD con CBV. Un administrador de tareas tiene funciones que permiten a los usuarios crear, actualizar, eliminar y leer tareas. Estas características están en línea con las operaciones CRUD. Los siguientes pasos lo ayudarán a crear una aplicación de administrador de tareas con Django CBV.

Configurar un proyecto de Django

Para crear una aplicación de administrador de tareas con Django, debe comenzar siguiendo estos pasos:

  1. Instala Django en tu Entorno virtual Python con este comando:
    pip instalar django
  2. Cree un proyecto de Django. El siguiente comando creará un proyecto llamado proyecto_núcleo.
    django-admin startproject proyecto_núcleo.
  3. Crea una aplicación llamada administrador de tareas.
    python manage.py startapp task_manager
  4. En tus configuración.py agregue el nombre de su aplicación al APLICACIONES_INSTALADAS lista.
    APLICACIONES_INSTALADAS = [
    'administrador de tareas',
    ]
  5. Abre el urls.py archivo en el directorio de su proyecto y configure las URL para su administrador de tareas aplicación:
    de django.urls importar camino, incluir

    patrones de URL = [
    camino('', incluir('administrador_de_tareas.urls')),
    ]

Cree un modelo para su aplicación Task Manager

En el directorio de su aplicación (o administrador de tareas carpeta), abra su modelos.py archivo y cree un modelo para su aplicación de administrador de tareas. Aquí hay un modelo de muestra que puede usar:

de django.db importar modelos

claseTarea(modelos. Modelo):
título = modelos. CharField (longitud_máxima=200)
descripción = modelos. Campo de texto()
completado = modelos. BooleanField (predeterminado=FALSO)
created_at = modelos. Campo de fecha y hora (auto_now_add=Verdadero)

Migra tu modelo con este comando:

python administrar.py hacer migraciones && python administrar.py migrar

Cree un formulario de Django para su aplicación

Debe tener un formulario para el manejo Crear y Actualizar operaciones. En el directorio de su aplicación, cree un archivo llamado formularios.py. Aquí hay un ejemplo:

de Django importar formularios
de .modelos importar Tarea

claseFormulario de tareas(formularios. modeloformulario):
claseMeta:
modelo = Tarea
campos = ['título', 'descripción', 'terminado']

widgets = {
'título': formularios. Entrada de texto (atributos={'clase': 'control de forma',}),
'descripción': formularios. área de texto (atributos={'clase': 'control de forma',}),
'terminado': formularios. CheckboxInput (atributos={'clase': 'formulario-comprobar-entrada'}),
}

El código anterior tiene una clase llamada Formulario de tareas que define los campos y widgets del formulario. También especifica el modelo a utilizar.

Crear vistas de Django para cada operación CRUD

Una aplicación CRUD básica con CBV requiere al menos cuatro vistas para manejar todas las operaciones de manera efectiva. Los siguientes pasos le mostrarán cómo crearlos.

Importar los Módulos y Paquetes Necesarios

Abre tu vistas.py archivo y hacer las siguientes importaciones:

de django.views.generic importar ListView, DetailView, CreateView, UpdateView, DeleteView
de django.urls importar inverso_perezoso
de .modelos importar Tarea
de .formularios importar Formulario de tareas

El código anterior importa cinco CBV. también importa inverso_perezoso para redirigir al usuario a una URL específica después de enviar un formulario. Finalmente, importa el Tarea modelo, y el Formulario de tareas creado anteriormente.

Crear una vista para listar objetos de modelo

Una aplicación de administrador de tareas debe tener una página que enumere todas las tareas creadas por el usuario. Para crear una vista para esto, debe usar el Vista de la lista. Aquí hay un ejemplo:

claseTaskListView(Vista de la lista):
modelo = Tarea
template_name = 'administrador_de_tareas/lista_de_tareas.html'
nombre_objeto_contexto = 'tareas'

La vista anterior define tres atributos que son:

  1. modelo: este atributo define qué modelo usar para esa vista específica.
  2. Nombre de la plantilla: Este atributo le dice a Django qué plantilla mostrar al navegador.
  3. nombre_objeto_contexto: este atributo define el nombre que permite que la plantilla acceda a la lista de objetos del modelo.

La mayoría de los CBV contendrán estos tres atributos.

Crear una vista para manejar los detalles de la tarea

Cada tarea que crea un usuario debe tener una página que muestre sus detalles. El CBV ideal para manejar esto es DetalleVista. Aquí hay un ejemplo simple:

claseTaskDetailView(Vista de detalles):
modelo = Tarea
template_name = 'administrador_de_tareas/detalle_de_tareas.html'

Crear una vista para la creación de tareas

Cree una vista para manejar la creación o adición de nuevas tareas. Este es el Crear parte de las operaciones CRUD, y la vista correcta para esto es la CreateView. Así es como se usa:

claseTaskCreateView(Crear Vista):
modelo = Tarea
form_class = Formulario de tareas
template_name = 'administrador_de_tareas/formulario_de_tareas.html'
exit_url = reverse_lazy('lista de tareas')

El código anterior introduce dos nuevos atributos: clase de formulario y éxito_url.

El clase de formulario El atributo le dice a la vista qué clase de formulario representar y usar para sus operaciones.

El éxito_url especifica cómo redirigir al usuario después de enviar el formulario. utiliza el inverso_perezoso función que toma el nombre de una ruta URL.

Crear una vista para editar tareas

Para permitir que sus usuarios editen o actualicen sus tareas, debe crear una vista similar a esta:

claseTaskUpdateView(Vista de actualización):
modelo = Tarea
form_class = Formulario de tareas
template_name = 'administrador_de_tareas/formulario_de_tareas.html'
exit_url = reverse_lazy('lista de tareas')

La vista anterior es similar a la TaskCreateView creado anteriormente. La única diferencia es el uso de la ActualizarVista.

Crear una vista para manejar operaciones de eliminación

Para permitir que sus usuarios eliminen tareas cuando lo deseen, debe utilizar el EliminarVer CBV. Aquí hay un ejemplo:

claseTaskDeleteView(Borrar Vista):
modelo = Tarea
template_name = 'administrador_de_tareas/task_confirm_delete.html'
exit_url = reverse_lazy('lista de tareas')

Configure las URL de su aplicación

En el directorio de su aplicación, cree un urls.py archivo y configure sus patrones de URL de esta manera:

de django.urls importar camino
de .puntos de vista importar TaskListView, TaskDetailView, TaskCreateView, TaskUpdateView, TaskDeleteView

patrones de URL =
camino('', TaskListView.as_view(), nombre='lista de tareas'),
camino('crear/', TaskCreateView.as_view(), nombre='tarea_crear'),
camino('tareas//', TaskDetailView.as_view(), nombre='tarea_detalle'),
camino('tareas//update/', TaskUpdateView.as_view(), nombre='actualizar_tarea'),
camino('tareas//delete/', TaskDeleteView.as_view(), nombre='tarea_eliminar'),
]

Los patrones de URL anteriores son similares a las URL creadas con vistas basadas en funciones. la diferencia es la como_vista() función añadida al final de cada nombre de vista.

Puede use slugs de Django para crear URL en lugar de la clave principal utilizada anteriormente.

Cree plantillas para sus vistas

Permitir que sus usuarios realicen las acciones definidas en las vistas anteriores sugiere que proporcione una interfaz para que interactúen. De las vistas creadas anteriormente, la aplicación del administrador de tareas debe tener cuatro interfaces de usuario.

En el directorio de su aplicación, cree cuatro plantillas HTML. También debes crear base.html archivo. Puede Dale estilo a tus plantillas de Django con Bootstrap Para ganar tiempo.

Plantilla de lista de tareas

Esta plantilla debe incluir un código que enumere todas las tareas del modelo. Un ejemplo esquelético del código es este:

{% extiende 'base.html' %}

{% contenido del bloque %}
<centro>
<h1>Sus tareash1>
<ahref="{% url 'task_create' %}">Agregar tareaa>
{% para tarea en tareas %}
<división>
<división>
<h5>{{ tarea.título }}h5>
<pag>{{ tarea.descripción|truncatechars: 50 }}pag>
<pag>
<fuerte>Terminado:fuerte>
{% if task.completed %}Sí{% else %}No{% endif %}
pag>
<ahref="{% url 'tarea_detalle' tarea.pk %}">
Leer más
a>
<ahref="{% url 'task_delete' task.pk %}">
Eliminar tarea
a>
división>
división>
{% vacío %}
<h3>No hay tareas todavía.h3>
<ahref="{% url 'task_create' %}">Agregar tareaa>
{% endfor%}
centro>
{% bloque final %}

Con algunas clases de Bootstrap, puede hacer que su página se vea así:

Plantilla de detalles de la tarea

Esta página debe mostrar los detalles completos de cada tarea creada. Aquí hay una plantilla de ejemplo que puede usar:

{% extiende 'base.html' %}

{% contenido del bloque %}
<h1>{{ tarea.título }}h1>
<pag>{{ descripción de la tarea }}pag>
<pag>Completado: {% if task.completed %}Sí{% else %}No{% endif %}pag>
<ahref="{% url 'task_update' task.pk %}">Editar tareaa>
<ahref="{% url 'task_delete' task.pk %}">Eliminar tareaa>
{% bloque final %}

Dependiendo de su enfoque de estilo, su página debería verse así:

Plantilla de formulario de tareas

Esta plantilla debe contener un formulario que permita al usuario crear o actualizar una tarea.

{% extiende 'base.html' %}

{% contenido del bloque %}
<h1>Crear tareah1>
<formamétodo="correo">
{% csrf_token%}
{{ formulario.as_p }}
<botóntipo="entregar">Ahorrarbotón>
forma>
{% bloque final %}

La plantilla se verá así:

Eliminar plantilla de tarea

Esta plantilla debe ser una página de confirmación para evitar la eliminación accidental de tareas.

{% extiende 'base.html' %}

{% contenido del bloque %}
<h1>Confirmar eliminaciónh1>
<pag>¿Está seguro de que desea eliminar "{{ object.title }}"?pag>
<formamétodo="correo">
{% csrf_token%}
<botóntipo="entregar">Borrarbotón>
<ahref="{% url 'lista_de_tareas' %}">Cancelara>
forma>
{% bloque final %}

Con un poco de Bootstrap, su página debería verse así:

Use vistas basadas en clases para aumentar su productividad

Las vistas basadas en clases son una excelente manera de escribir código limpio y organizado en poco tiempo, lo que aumenta su productividad. Debe utilizarlos en sus proyectos tanto como sea posible. Además, puede integrar aún más funciones como la funcionalidad de búsqueda, notificaciones, etc. para hacer que su aplicación de administrador de tareas sea una aplicación funcional completa.