En aquest tema, explorarem com Django organitza els projectes i les aplicacions, i com podem estructurar el nostre codi per mantenir-lo net i manejable. Aprendrem a crear aplicacions dins d'un projecte Django i a comprendre la seva estructura.

Què és una Aplicació Django?

Una aplicació Django és una unitat funcional dins d'un projecte Django. Cada aplicació està dissenyada per fer una cosa específica. Per exemple, podríem tenir una aplicació per gestionar usuaris, una altra per gestionar blogs, etc. Un projecte Django pot contenir múltiples aplicacions.

Característiques d'una Aplicació Django:

  • Reutilitzable: Una aplicació pot ser utilitzada en múltiples projectes.
  • Modular: Cada aplicació té una funcionalitat específica.
  • Independent: Les aplicacions poden funcionar de manera independent dins del projecte.

Estructura d'un Projecte Django

Quan creem un projecte Django, es genera una estructura de directoris específica. Vegem un exemple d'aquesta estructura:

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

Descripció dels Fitxers i Directoris:

  • manage.py: Script de línia de comandes per interactuar amb el projecte Django.
  • myproject/: Directori del projecte que conté la configuració global.
    • init.py: Fitxer buit que indica que aquest directori és un paquet Python.
    • settings.py: Configuració del projecte.
    • urls.py: Definició de les URL del projecte.
    • wsgi.py: Configuració per desplegar el projecte en un servidor WSGI.

Creació d'una Aplicació Django

Per crear una nova aplicació dins del nostre projecte, utilitzem el següent comandament:

python manage.py startapp myapp

Això crearà una nova carpeta myapp/ amb l'estructura següent:

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

Descripció dels Fitxers i Directoris de l'Aplicació:

  • init.py: Fitxer buit que indica que aquest directori és un paquet Python.
  • admin.py: Configuració de l'administració de Django per a aquesta aplicació.
  • apps.py: Configuració de l'aplicació.
  • models.py: Definició dels models de dades.
  • tests.py: Definició de les proves per a l'aplicació.
  • views.py: Definició de les vistes.
  • migrations/: Directori per a les migracions de la base de dades.

Integració de l'Aplicació al Projecte

Després de crear una aplicació, hem d'integrar-la al nostre projecte afegint-la a la configuració del projecte. Obrim settings.py i afegim el nom de l'aplicació a la llista INSTALLED_APPS:

# myproject/settings.py

INSTALLED_APPS = [
    ...
    'myapp',
]

Exemple Pràctic

Creació d'una Aplicació de Blog

  1. Crear l'aplicació:

    python manage.py startapp blog
    
  2. Afegir l'aplicació a INSTALLED_APPS:

    # myproject/settings.py
    
    INSTALLED_APPS = [
        ...
        'blog',
    ]
    
  3. Definir un model simple per a l'aplicació de blog:

    # 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. Crear una vista per mostrar els posts:

    # 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})
    
  5. Definir una URL per a la vista:

    # blog/urls.py
    
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.post_list, name='post_list'),
    ]
    
  6. Incloure les URL de l'aplicació al projecte:

    # 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')),
    ]
    
  7. Crear una plantilla per mostrar els posts:

    <!-- blog/templates/blog/post_list.html -->
    
    <!DOCTYPE html>
    <html>
    <head>
        <title>Blog</title>
    </head>
    <body>
        <h1>Blog Posts</h1>
        <ul>
            {% for post in posts %}
                <li>{{ post.title }} - {{ post.created_at }}</li>
            {% endfor %}
        </ul>
    </body>
    </html>
    

Exercici Pràctic

Objectiu:

Crear una aplicació anomenada library per gestionar llibres dins del projecte Django.

Passos:

  1. Crear l'aplicació library.
  2. Afegir l'aplicació a INSTALLED_APPS.
  3. Definir un model Book amb els camps title, author, published_date.
  4. Crear una vista per llistar els llibres.
  5. Definir una URL per a la vista.
  6. Crear una plantilla per mostrar els llibres.

Solució:

  1. Crear l'aplicació:

    python manage.py startapp library
    
  2. Afegir l'aplicació a INSTALLED_APPS:

    # myproject/settings.py
    
    INSTALLED_APPS = [
        ...
        'library',
    ]
    
  3. Definir el model Book:

    # library/models.py
    
    from django.db import models
    
    class Book(models.Model):
        title = models.CharField(max_length=200)
        author = models.CharField(max_length=100)
        published_date = models.DateField()
    
        def __str__(self):
            return self.title
    
  4. Crear la vista per llistar els llibres:

    # library/views.py
    
    from django.shortcuts import render
    from .models import Book
    
    def book_list(request):
        books = Book.objects.all()
        return render(request, 'library/book_list.html', {'books': books})
    
  5. Definir la URL per a la vista:

    # library/urls.py
    
    from django.urls import path
    from . import views
    
    urlpatterns = [
        path('', views.book_list, name='book_list'),
    ]
    
  6. Incloure les URL de l'aplicació al projecte:

    # myproject/urls.py
    
    from django.contrib import admin
    from django.urls import path, include
    
    urlpatterns = [
        path('admin/', admin.site.urls),
        path('library/', include('library.urls')),
    ]
    
  7. Crear la plantilla per mostrar els llibres:

    <!-- library/templates/library/book_list.html -->
    
    <!DOCTYPE html>
    <html>
    <head>
        <title>Library</title>
    </head>
    <body>
        <h1>Library Books</h1>
        <ul>
            {% for book in books %}
                <li>{{ book.title }} by {{ book.author }} ({{ book.published_date }})</li>
            {% endfor %}
        </ul>
    </body>
    </html>
    

Conclusió

En aquesta secció, hem après què són les aplicacions Django i com estructurar un projecte Django. Hem creat una aplicació simple i l'hem integrat al nostre projecte. Aquest coneixement és fonamental per organitzar el nostre codi de manera eficient i mantenible. En la següent secció, explorarem com gestionar les URL i les vistes en Django.

© Copyright 2024. Tots els drets reservats