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:
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:
Això crearà una nova carpeta myapp/
amb l'estructura següent:
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
:
Exemple Pràctic
Creació d'una Aplicació de Blog
-
Crear l'aplicació:
python manage.py startapp blog
-
Afegir l'aplicació a
INSTALLED_APPS
:# myproject/settings.py INSTALLED_APPS = [ ... 'blog', ]
-
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
-
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})
-
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'), ]
-
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')), ]
-
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:
- Crear l'aplicació
library
. - Afegir l'aplicació a
INSTALLED_APPS
. - Definir un model
Book
amb els campstitle
,author
,published_date
. - Crear una vista per llistar els llibres.
- Definir una URL per a la vista.
- Crear una plantilla per mostrar els llibres.
Solució:
-
Crear l'aplicació:
python manage.py startapp library
-
Afegir l'aplicació a
INSTALLED_APPS
:# myproject/settings.py INSTALLED_APPS = [ ... 'library', ]
-
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
-
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})
-
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'), ]
-
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')), ]
-
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.
Curs de Desenvolupament Web amb Django
Mòdul 1: Introducció a Django
- Què és Django?
- Configuració de l'Entorn de Desenvolupament
- Creació del teu Primer Projecte Django
- Comprensió de l'Estructura del Projecte Django
Mòdul 2: Conceptes Bàsics de Django
- Aplicacions Django i Estructura del Projecte
- Enrutament d'URL i Vistes
- Plantilles i Fitxers Estàtics
- Models i Bases de Dades
- Interfície d'Administració de Django
Mòdul 3: Django Intermedi
Mòdul 4: Django Avançat
- Consultes Avançades amb Django ORM
- Models d'Usuari Personalitzats
- Senyalitzacions de Django
- Proves en Django
- Optimització del Rendiment