En este tema, exploraremos cómo Django organiza los proyectos y las aplicaciones dentro de un proyecto. Comprender esta estructura es fundamental para desarrollar aplicaciones web robustas y escalables.

¿Qué es una Aplicación Django?

Una aplicación en Django es una unidad de funcionalidad que puede ser reutilizada en diferentes proyectos. Cada aplicación tiene un propósito específico, como manejar la autenticación de usuarios, gestionar un blog, o procesar pagos.

Características de una Aplicación Django:

  • Reutilizable: Puede ser utilizada en múltiples proyectos.
  • Independiente: Funciona de manera autónoma y no depende de otras aplicaciones.
  • Modular: Facilita la organización del código y la colaboración en equipos.

Estructura de un Proyecto Django

Un proyecto Django es una colección de configuraciones y aplicaciones para un sitio web. La estructura básica de un proyecto Django se ve así:

myproject/
    manage.py
    myproject/
        __init__.py
        settings.py
        urls.py
        wsgi.py

Desglose de Archivos y Directorios:

  • manage.py: Un script de línea de comandos que permite interactuar con el proyecto Django. Se utiliza para ejecutar comandos como iniciar el servidor de desarrollo, crear aplicaciones, y realizar migraciones de bases de datos.

  • myproject/: El directorio del proyecto principal que contiene las configuraciones globales del proyecto.

    • init.py: Un archivo vacío que indica a Python que este directorio debe ser tratado como un paquete.

    • settings.py: Contiene todas las configuraciones del proyecto, como la configuración de la base de datos, las aplicaciones instaladas, y las configuraciones de middleware.

    • urls.py: Define las rutas URL para el proyecto. Aquí se incluyen las rutas de las aplicaciones.

    • wsgi.py: Un punto de entrada para los servidores web compatibles con WSGI para servir tu proyecto Django.

Creando una Aplicación Django

Para crear una nueva aplicación dentro de tu proyecto Django, utiliza el siguiente comando:

python manage.py startapp myapp

Esto creará una estructura de directorios como la siguiente:

myapp/
    __init__.py
    admin.py
    apps.py
    models.py
    tests.py
    views.py
    migrations/
        __init__.py

Desglose de Archivos y Directorios de una Aplicación:

  • init.py: Indica que este directorio debe ser tratado como un paquete Python.
  • admin.py: Aquí se registran los modelos para que aparezcan en la interfaz de administración de Django.
  • apps.py: Configuración de la aplicación.
  • models.py: Define los modelos de datos de la aplicación.
  • tests.py: Contiene las pruebas unitarias para la aplicación.
  • views.py: Define las vistas que manejan las solicitudes HTTP.
  • migrations/: Contiene los archivos de migración de la base de datos.

Integrando la Aplicación en el Proyecto

Para que Django reconozca la nueva aplicación, debes agregarla a la lista INSTALLED_APPS en settings.py:

# myproject/settings.py

INSTALLED_APPS = [
    ...
    'myapp',
    ...
]

Ejemplo Práctico

Vamos a crear una aplicación simple llamada blog y agregarla a nuestro proyecto.

  1. Crear la Aplicación:

    python manage.py startapp blog
    
  2. Agregar la Aplicación a INSTALLED_APPS:

    # myproject/settings.py
    
    INSTALLED_APPS = [
        ...
        'blog',
        ...
    ]
    
  3. Definir un Modelo en models.py:

    # blog/models.py
    
    from django.db import models
    
    class Post(models.Model):
        title = models.CharField(max_length=100)
        content = models.TextField()
        created_at = models.DateTimeField(auto_now_add=True)
    
        def __str__(self):
            return self.title
    
  4. Registrar el Modelo en admin.py:

    # blog/admin.py
    
    from django.contrib import admin
    from .models import Post
    
    admin.site.register(Post)
    
  5. Crear y Aplicar Migraciones:

    python manage.py makemigrations
    python manage.py migrate
    
  6. Definir una Vista en views.py:

    # blog/views.py
    
    from django.shortcuts import render
    from .models import Post
    
    def post_list(request):
        posts = Post.objects.all()
        return render(request, 'blog/post_list.html', {'posts': posts})
    
  7. Configurar la URL en urls.py:

    # blog/urls.py
    
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.post_list, name='post_list'),
    ]
    
  8. Incluir la URL de la Aplicación en el Proyecto:

    # myproject/urls.py
    
    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('blog/', include('blog.urls')),
    ]
    

Ejercicio Práctico

Objetivo: Crear una aplicación llamada portfolio que gestione proyectos de un portafolio.

  1. Crear la Aplicación:

    python manage.py startapp portfolio
    
  2. Agregar la Aplicación a INSTALLED_APPS:

    # myproject/settings.py
    
    INSTALLED_APPS = [
        ...
        'portfolio',
        ...
    ]
    
  3. Definir un Modelo Project en models.py:

    # portfolio/models.py
    
    from django.db import models
    
    class Project(models.Model):
        name = models.CharField(max_length=100)
        description = models.TextField()
        created_at = models.DateTimeField(auto_now_add=True)
    
        def __str__(self):
            return self.name
    
  4. Registrar el Modelo en admin.py:

    # portfolio/admin.py
    
    from django.contrib import admin
    from .models import Project
    
    admin.site.register(Project)
    
  5. Crear y Aplicar Migraciones:

    python manage.py makemigrations
    python manage.py migrate
    
  6. Definir una Vista project_list en views.py:

    # portfolio/views.py
    
    from django.shortcuts import render
    from .models import Project
    
    def project_list(request):
        projects = Project.objects.all()
        return render(request, 'portfolio/project_list.html', {'projects': projects})
    
  7. Configurar la URL en urls.py:

    # portfolio/urls.py
    
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.project_list, name='project_list'),
    ]
    
  8. Incluir la URL de la Aplicación en el Proyecto:

    # myproject/urls.py
    
    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('portfolio/', include('portfolio.urls')),
    ]
    

Conclusión

En esta sección, hemos aprendido sobre la estructura de un proyecto Django y cómo crear e integrar aplicaciones dentro de un proyecto. Este conocimiento es esencial para organizar y gestionar el código de manera eficiente en proyectos Django. En el próximo tema, exploraremos el enrutamiento de URL y las vistas en Django.

© Copyright 2024. Todos los derechos reservados