Actualizado el miércoles, 1 mayo, 2024

En este tutorial, aprenderemos la diferencia entre un proyecto django y una aplicación Django, y cómo iniciar un nuevo proyecto Django.

Django es el marco web de Python de elección para crear aplicaciones web. Es un marco maduro, con todas las funciones, flexible y de código abierto que le permite crear cualquier cosa, desde una simple aplicación CRUD hasta un proyecto más complejo y multiaplicación, como una aplicación para compartir fotos.

Requisitos

No necesita conocimientos previos para configurar un proyecto django. Pero Django es un marco de Python, por lo que para usarlo debe tener bases sólidas que usen Python..

Antes de comenzar, asegúrese de tener instalado un terminal o símbolo del sistema con Python 3.6 o posterior.

La mayoría de los sistemas macOS y Linux tienen Python 3 instalado de forma predeterminada, pero si está utilizando Windows, deberá descargar e instalar Python. Puede seguir esta guía desde el sitio web oficial de Python.

Puede abrir un terminal abriendo el buscador de aplicaciones de su sistema operativo y buscando Terminal, o en Windows, cmd.

Una vez que haya configurado un terminal, es hora de confirmar su versión de Python. Para ello, escriba el siguiente comando:

python --version

Python 3.9.7 # My result

Si no obtuviste un resultado del formulario Python 3.x, no entres en pánico. Hay dos opciones:

  • si python --version devolvió una versión de Python 2.x, deberá usar python3 junto con este tutorial. Esto suele suceder con algunos sistemas macOS, así como con algunas distribuciones de Linux como Ubuntu. Intente ejecutar el siguiente comando:python3 --version Python 3.9.7 # Again, my result
  • Si obtuvo un error Unknown command, intentó ejecutar python3 y aún obtuvo otro error, deberá descargar e instalar Python desde el sitio web oficial.

Ahora que sabes qué comando de Python ejecutar en tu terminal, vamos a sumergirnos en los proyectos de Django.

¿Qué es un proyecto Django?

Un proyecto Django es un paquete Python necesario para que una aplicación web funcione. Contiene todo lo que necesita para construir el backend (desarrollo del lado del servidor, lo que los usuarios no ven) de su sitio. La funcionalidad normal de un proyecto django determina cómo interactúa con la base de datos, la autenticación, cómo se recuperan los datos, etc.

También puede pensar en ello como una colección de configuraciones y pequeños módulos de Python llamados aplicaciones. Hablaremos de ellos más adelante, pero como preconcepto, una aplicación es otro conjunto de archivos Python que resuelven una tarea específica de su aplicación.

A través de este artículo, aprenderá sobre la sofisticada estructura de un proyecto Django. Pero desde el principio quiero que sepas que un proyecto de Django se puede reducir a un solo archivo, algo similar a un proyecto de Flask.

Una demostración rápida de esto es el proyecto Minimal Django. Este es un archivo con 23 líneas de código que nos permite dar vida a un proyecto de Django «¡Hola, Mundo!»:

import sys

from django.conf import settings
from django.urls import path
from django.core.management import execute_from_command_line
from django.http import HttpResponse

settings.configure(
    DEBUG=True,
    ROOT_URLCONF=sys.modules[__name__],
)


def index(request):
    return HttpResponse('<h1>A minimal Django response!</h1>')


urlpatterns = [
    path(r'', index),
]

if __name__ == '__main__':
    execute_from_command_line(sys.argv)

Ahora, un proyecto django puede ir mucho más allá. Un gran ejemplo es Instagram, que tiene miles de puntos finales de Django y todavía utiliza este marco para una funcionalidad crucial.

Cómo configurar un proyecto Django

No se preocupe demasiado si algunos de los siguientes comandos parecen complejos. Después de haber creado un par de proyectos, los conocerás como la palma de tu mano.

En primer lugar, debe saber que Django es un paquete externo. En otras palabras, no viene incorporado con Python, por lo que deberá instalarlo con PIP.

PIP es un administrador de paquetes para Python, una herramienta que le permite instalar paquetes de Python desde el Índice de paquetes de Python (PyPI).

Ahora, antes de instalar el paquete python real, deberá crear un entorno virtual. Es una buena práctica crear un entorno virtual para cada proyecto de Django que construyas, para que puedas realizar un seguimiento de las dependencias.

Tal vez el código que tiene en un proyecto de Django 2.6 puede no funcionar con Django 3.0. Un entorno virtual le permite tener requisitos específicos para cada proyecto que tenga.

Puede crear un entorno virtual denominado .venv (o el nombre que desee) con el siguiente comando:

python -m venv .venv

Ahora, si enumera los archivos en el directorio actual, verá una nueva carpeta llamada .venv, que al mismo tiempo contiene binarios aislados de Python:

$ ls -lah .venv/
Permissions Size User   Date Modified Name
drwxr-xr-x     - daniel 10 nov 23:13  .
drwxr-xr-x     - daniel 10 nov 23:13  ..
drwxr-xr-x     - daniel 10 nov 23:13  bin
drwxr-xr-x     - daniel 10 nov 23:13  include
drwxr-xr-x     - daniel 10 nov 23:13  lib
lrwxrwxrwx     3 daniel 10 nov 23:13  lib64 -> lib
.rw-r--r--    69 daniel 10 nov 23:13  pyvenv.cfg

Para activar su entorno virtual, debe activarlo con el siguiente comando:

source .venv/bin/activate

Esto solo funcionará en shells bash (disponibles en macOS y Linux). Si está utilizando un shell diferente, puede echar un vistazo a la siguiente tabla venv activación:

PlataformaShellComando para activar el entorno virtual
POSIXbash/zsh$ source .venv>/bin/activate
fish$ source .venv>/bin/activate.fish
csh/tcsh$ source .venv>/bin/activate.csh
PowerShell Core$ .venv/bin/Activate.ps1
Windowscmd.exeC:\> .venv\Scripts\activate.bat
PowerShellPS C:\> .venv\Scripts\Activate.ps1

Una forma de comprobar que el shell está activado es buscando cambios en el mensaje. En mi caso, lo que vi se muestra a continuación.

Ahora, instale el paquete Django. Puede instalar la versión más reciente o una versión específica de Django:

pip install django # Latest version
pip install django==2.2 # Specific version

Iniciar el proyecto

Una vez que haya instalado Django, para iniciar un nuevo proyecto, llame a la utilidad de línea de comandos django-admin y ejecute:

django-admin startproject <project_name>

Vale la pena mencionar que algunos nombres están reservados para Django: django o django-admin. No se preocupe si recibe un error. Simplemente intente usar un nombre de proyecto diferente:

django-admin startproject django
# CommandError: 'django' conflicts with the name of an existing Python module and cannot be used as a project name. Please try another name.
django-admin startproject django-admin
# CommandError: 'django-admin' is not a valid project name. Please make sure the name is a valid identifier.

Una práctica común es nombrar su proyecto como config, y esto tiene algunas ventajas. En primer lugar, es un nombre que puede mantener coherente en todos sus proyectos, y en segundo lugar, normalmente la carpeta «proyecto» solo almacena archivos relacionados con la configuración. Puedes leer más en el foro oficial de Django:

django-admin startproject config

Estructura del proyecto Django

Una vez que haya iniciado un proyecto de Django, verá una nueva carpeta con el nombre del proyecto que eligió y una estructura similar a esta:

.
├── config
│   ├── config
│   │   ├── asgi.py
│   │   ├── __init__.py
│   │   ├── settings.py
│   │   ├── urls.py
│   │   └── wsgi.py
│   └── manage.py
└── .venv

Analicemos cada parte en profundidad:

  • config/ es la carpeta externa de su proyecto. No le importa a Django, por lo que puedes cambiarle el nombre a lo que quieras.
  • config/config/ es la carpeta de proyecto real de Django. Contiene los archivos de configuración de su proyecto.
  • manage.py es un script de Python con la misma funcionalidad de django_admin pero utiliza la configuración de su proyecto.
  • __init__.py hace que config/config un paquete de Python.
  • settings.py es el archivo central de su proyecto. Puede agregar, modificar o eliminar variables para cambiar el comportamiento del proyecto.
  • urls.py es el archivo que define las URL de su proyecto.
  • asgi.py y wsgi.py le permiten implementar el proyecto en un servidor.

Sé que la estructura del proyecto de Django puede ser un poco compleja al principio, pero con el tiempo, comienza a tener sentido. Cada archivo tiene un propósito, y el proceso de desarrollo se vuelve realmente agradable.

Un atajo común es omitir la creación de la carpeta externa. Esto es útil porque no tendrá que modificar la estructura de su proyecto al implementar en algo como Heroku:

django-admin startproject <project_name> .

Entonces, por ejemplo, para cada proyecto de Django que inicie, puede ejecutar el siguiente comando:

django-admin startproject config .

Pruebe cada comando por su cuenta y decida cuál es el mejor para usted.

Para finalizar esta sección, iniciaremos el servidor de desarrollo de Django y comprobaremos que la configuración del proyecto se realizó correctamente.

Vaya a la carpeta raíz de su proyecto (donde se encuentra manage.py) e inicie el servidor con este comando:

python manage.py runserver

Ahora, vaya a su navegador, escriba localhost: 8000 / y debería ver la página predeterminada de Django.

Cómo configurar una aplicación Django

Como te dije anteriormente, un proyecto de Django es diferente de una aplicación de Django.

De los documentos oficiales: «Una aplicación es una aplicación web que hace algo». Ese algo es una funcionalidad específica, como la aplicación de un usuario, una aplicación de comentarios, una aplicación de chat.

Cuanto más orientadas a las funciones estén sus aplicaciones, mejor.

Una aplicación Django es autónoma, lo que significa que se puede reutilizar de un proyecto a otro. Es por eso que puede instalar una aplicación externa, como Django-allauth, y usarla en su proyecto, simplemente agregándola a la variable INSTALLED_APPS.

Pasarás la mayor parte de tu tiempo trabajando con aplicaciones, porque, una por una, crean todas las características de tu proyecto.

A partir de ahora, usará la utilidad manage.py, por lo que para crear una aplicación, vaya a la carpeta raíz de su proyecto y ejecute el siguiente comando:

python manage.py startapp <app_name>

Intenta ser lo más específico posible con los nombres de tus aplicaciones. Si desea crear una aplicación para integrar pagos con PayPal, o Stripe, asígnele un nombre simplemente payments:

python manage.py startapp payments

Profundicemos en la estructura de una aplicación Django:

.
├── config
│   ├ ...
├── manage.py
└── payments
    ├── admin.py
    ├── apps.py
    ├── __init__.py
    ├── migrations
    │   └── __init__.py
    ├── models.py
    ├── tests.py
    └── views.py
  • payments/ es la carpeta de tu aplicación.
  • admin.py se utiliza para registrar los modelos en la interfaz de administración de Django.
  • apps.py define la configuración de la aplicación.
  • models.py se utiliza para almacenar los modelos, que son los objetos que creamos para almacenar y controlar los datos.
  • migrations/ es la carpeta que contiene los scripts de migración de la aplicación. Las migraciones se ejecutan para aplicar los cambios de nuestros modelos en una base de datos.
  • tests.py se utiliza para probar la aplicación.
  • views.py es el archivo donde definimos las vistas de nuestra app. Una vista es un python al que se puede llamar y recibe una solicitud HTTP y devuelve una respuesta HTTP.

Dentro de sus aplicaciones, puede crear otros archivos y carpetas, e incluso crear plantillas, que son la forma django de mostrar datos dinámicamente en una página web.

Comando Cheatsheet

Hemos usado muchos comandos en este tutorial, así que aquí hay un resumen del propósito de cada comando.

ComandoDescripción
python -m venv (name_of_venv)Crea un entorno virtual
source (venv)/bin/activateActiva un entorno virtual
django-admin startproject (project_name)Inicia un proyecto django
django-admin startproject (project_name) .Configura un proyecto en el mismo directorio
python manage.py runserverEjecuta el servidor Django
python manage.py startapp (app_name)Crea una aplicación Django

Conclusión

Django es un marco web de batería completa que le permite crear cualquier tipo de aplicación. Configurar un proyecto django es rápido y fácil, y puede comenzar a trabajar en su proyecto de inmediato.

Con este tutorial, aprendiste a:

  • crear un entorno virtual
  • Instalar una versión específica de Django
  • iniciar un proyecto Django
  • Ejecutar un servidor Django
  • crear una aplicación Django
  • diferenciar entre una aplicación Django y un proyecto Django