En este tema, aprenderás cómo manejar la carga de archivos en Django. Este es un aspecto crucial para muchas aplicaciones web, ya que permite a los usuarios subir imágenes, documentos y otros tipos de archivos. Vamos a cubrir los siguientes puntos:

  1. Configuración del Proyecto para Cargas de Archivos
  2. Creación de un Modelo para Almacenar Archivos
  3. Configuración de Formularios para Cargar Archivos
  4. Manejo de Vistas para Procesar Cargas de Archivos
  5. Mostrar Archivos Cargados en Plantillas

  1. Configuración del Proyecto para Cargas de Archivos

Primero, necesitamos configurar nuestro proyecto Django para manejar archivos cargados. Esto incluye la configuración de las rutas de los archivos y la configuración de los ajustes necesarios en settings.py.

Configuración en settings.py

# settings.py

import os

# Ruta donde se almacenarán los archivos cargados
MEDIA_URL = '/media/'
MEDIA_ROOT = os.path.join(BASE_DIR, 'media')

Configuración de URLs

Asegúrate de que tu archivo urls.py principal esté configurado para servir archivos cargados durante el desarrollo.

# urls.py

from django.conf import settings
from django.conf.urls.static import static
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('your_app.urls')),
]

if settings.DEBUG:
    urlpatterns += static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)

  1. Creación de un Modelo para Almacenar Archivos

Vamos a crear un modelo simple que permita a los usuarios cargar archivos.

# models.py

from django.db import models

class Document(models.Model):
    description = models.CharField(max_length=255, blank=True)
    document = models.FileField(upload_to='documents/')
    uploaded_at = models.DateTimeField(auto_now_add=True)

  1. Configuración de Formularios para Cargar Archivos

Necesitamos un formulario que permita a los usuarios seleccionar y cargar archivos.

# forms.py

from django import forms
from .models import Document

class DocumentForm(forms.ModelForm):
    class Meta:
        model = Document
        fields = ('description', 'document',)

  1. Manejo de Vistas para Procesar Cargas de Archivos

Ahora, vamos a crear una vista que maneje la carga de archivos.

# views.py

from django.shortcuts import render, redirect
from django.http import HttpResponse
from .forms import DocumentForm
from .models import Document

def upload_file(request):
    if request.method == 'POST':
        form = DocumentForm(request.POST, request.FILES)
        if form.is_valid():
            form.save()
            return redirect('file_upload_success')
    else:
        form = DocumentForm()
    return render(request, 'upload.html', {'form': form})

def file_upload_success(request):
    return HttpResponse('Archivo cargado exitosamente')

  1. Mostrar Archivos Cargados en Plantillas

Finalmente, vamos a crear una plantilla para mostrar el formulario de carga y otra para confirmar la carga exitosa.

Plantilla de Carga (upload.html)

<!-- upload.html -->

<!DOCTYPE html>
<html>
<head>
    <title>Cargar Archivo</title>
</head>
<body>
    <h1>Cargar Archivo</h1>
    <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form.as_p }}
        <button type="submit">Cargar</button>
    </form>
</body>
</html>

Plantilla de Éxito (success.html)

<!-- success.html -->

<!DOCTYPE html>
<html>
<head>
    <title>Éxito</title>
</head>
<body>
    <h1>Archivo cargado exitosamente</h1>
</body>
</html>

Ejercicio Práctico

Ejercicio

  1. Configura tu proyecto Django para manejar cargas de archivos.
  2. Crea un modelo Document que permita almacenar archivos.
  3. Configura un formulario y una vista para manejar la carga de archivos.
  4. Crea plantillas para mostrar el formulario de carga y confirmar la carga exitosa.

Solución

Sigue los pasos descritos en las secciones anteriores para completar el ejercicio. Asegúrate de probar la funcionalidad cargando diferentes tipos de archivos y verificando que se almacenan correctamente en la ruta especificada.

Conclusión

En esta sección, has aprendido cómo configurar tu proyecto Django para manejar la carga de archivos, crear modelos y formularios para almacenar archivos, y cómo manejar las vistas y plantillas necesarias para procesar y mostrar archivos cargados. Con estos conocimientos, puedes permitir a los usuarios de tu aplicación cargar y gestionar archivos de manera efectiva. En el próximo módulo, exploraremos conceptos más avanzados de Django.

© Copyright 2024. Todos los derechos reservados