<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Django, aprende de manera fácil.]]></title><description><![CDATA[Soy Ingeniero de Software con más de 20 años dedicados apasionadamente al desarrollo de aplicaciones, obsesionado en aprender más sobre Django y PostgreSQL.]]></description><link>https://blog.mundolapa.dev</link><generator>RSS for Node</generator><lastBuildDate>Fri, 01 May 2026 01:26:27 GMT</lastBuildDate><atom:link href="https://blog.mundolapa.dev/rss.xml" rel="self" type="application/rss+xml"/><language><![CDATA[en]]></language><ttl>60</ttl><item><title><![CDATA[Como crear un proyecto nuevo de Django]]></title><description><![CDATA[Django es un framework desarrollado en Python. Antes de iniciar su instalación, es esencial que tengas Python ya instalado en tu computadora. Para hacerlo, puedes descargar la versión más reciente y estable desde el sitio oficial python.org. Una vez ...]]></description><link>https://blog.mundolapa.dev/crear-proyecto-nuevo-django</link><guid isPermaLink="true">https://blog.mundolapa.dev/crear-proyecto-nuevo-django</guid><category><![CDATA[Django]]></category><category><![CDATA[Python]]></category><category><![CDATA[python beginner]]></category><dc:creator><![CDATA[Arnold Lara]]></dc:creator><pubDate>Sun, 13 Aug 2023 05:04:43 GMT</pubDate><enclosure url="https://cdn.hashnode.com/res/hashnode/image/upload/v1691902675168/661ac495-cbe7-4014-8f72-26b8a5d08f80.png" length="0" type="image/jpeg"/><content:encoded><![CDATA[<p>Django es un framework desarrollado en Python. Antes de iniciar su instalación, es esencial que tengas Python ya instalado en tu computadora. Para hacerlo, puedes descargar la versión más reciente y estable desde el sitio oficial <a target="_blank" href="http://python.org">python.org</a>. Una vez que hayas completado la instalación de Python, puedes verificar que todo esté en orden consultando la versión instalada mediante el siguiente comando:</p>
<pre><code class="lang-powershell">python3 -<span class="hljs-literal">-version</span>
</code></pre>
<h3 id="heading-pasos-para-instalar-django">Pasos para instalar Django</h3>
<p>El primer paso es crear un directorio para tu proyecto y dentro del nuevo directorio debes crear un ambiente virtual. Un ambiente virtual en Python es una herramienta que nos ayuda a mantener separadas las dependencias requeridas por cada proyecto. Al asignar a cada proyecto un directorio propio podemos instalar diferentes paquetes sin interferir con otros ambientes virtuales o con la instalación global del sistema.</p>
<p>Los ambientes virtuales son útiles por:</p>
<ol>
<li><p><strong>Aislamiento</strong>: Si tienes varios proyectos y cada uno requiere diferentes versiones de paquetes, los ambientes virtuales te permiten mantener estas dependencias separadas y organizadas.</p>
</li>
<li><p><strong>Evitar conflictos</strong>: En ocasiones, dos paquetes pueden requerir diferentes versiones de una misma dependencia. Al usar ambientes virtuales, puedes instalar la versión correcta para cada proyecto sin conflictos.</p>
</li>
<li><p><strong>Reproducibilidad</strong>: Puedes especificar y mantener consistentes las versiones de las dependencias que tu proyecto requiere, lo cual facilita compartirlo o desplegarlo en un nuevo entorno.</p>
</li>
</ol>
<p>Para trabajar con ambientes virtuales en Python, a menudo se utiliza <code>venv</code> o <code>virtualenv</code>. El módulo <code>venv</code> viene incluido en las versiones estándar de Python a partir de Python 3.3.</p>
<p>Para crear un nuevo ambiente virtual con <code>venv</code>, puedes seguir estos pasos:</p>
<ol>
<li><p>Abre una terminal.</p>
</li>
<li><p>Navega al directorio del proyecto donde deseas crear el ambiente virtual.</p>
</li>
<li><p>Ejecuta:</p>
<pre><code class="lang-powershell"> python3 <span class="hljs-literal">-m</span> venv nombre_del_ambiente
</code></pre>
<p> Para el nombre del ambiente comunmente se utiliza la palabra venv igual que el nombre del módulo, pero este no es obligatorio, puedes utilizar cualquier nombre.</p>
</li>
<li><p>Activa el ambiente virtual:</p>
<ul>
<li><p>En windows:</p>
<pre><code class="lang-powershell">  .\nombre_del_ambiente\Scripts\activate
</code></pre>
</li>
<li><p>En macOS o Linux</p>
<pre><code class="lang-powershell">  source nombre_del_ambiente/bin/activate
</code></pre>
</li>
</ul>
</li>
</ol>
<p>    Una vez activado el ambiente, tu línea de comandos mostrará el nombre del ambiente virtual al principio, indicando que cualquier paquete que instales con <code>pip</code> se instalará en ese ambiente en lugar de la instalación global de Python.</p>
<pre><code class="lang-powershell">    (nombre_del_ambiente) foo@bar:~<span class="hljs-variable">$</span>
</code></pre>
<p>    Para desactivar el ambiente y volver al Python global, simplemente escribe:</p>
<pre><code class="lang-powershell">    deactivate
</code></pre>
<p>    Es importante recordar activar el ambiente virtual cada vez que trabajes en un proyecto que dependa de él.</p>
<p>Segundo paso, instalar Django en nuestro ambiente virtual, para instalar django usaremos <code>pip</code> ,es recomendable mantenerlo actualizado, para actualizar <code>pip</code> ejecuta el siguiente comando:</p>
<pre><code class="lang-powershell">pip install -<span class="hljs-literal">-upgrade</span> pip
</code></pre>
<p>Ya que tenemos actualizado <code>pip</code> procedemos a instalar django. Ejecuta el siguiente comando:</p>
<pre><code class="lang-powershell">python3 <span class="hljs-literal">-m</span> pip install django
</code></pre>
<p>Este comando instalará la ultima versión estable de django, en el caso que necesites instalar una versión especifica de django debes ejecutar el siguiente comando:</p>
<pre><code class="lang-powershell">pip install django==X.Y.Z
</code></pre>
<p>Donde X.Y.Z es la versión exacta de Django que deseas instalar. Por ejemplo, si deseas instalar Django versión 3.1.5, el comando sería:</p>
<pre><code class="lang-powershell">pip install django==<span class="hljs-number">3.1</span>.<span class="hljs-number">5</span>
</code></pre>
<p><strong>Recuerda</strong>: si estás utilizando un ambiente virtual (como es recomendado cuando trabajas con proyectos de Django para evitar conflictos entre dependencias), asegúrate de tener el ambiente activado antes de ejecutar el comando anterior.</p>
<p>Para verificar que django se ha instalado correctamente en tu ambiente virtual verifica la versión instalada con el siguiente comando:</p>
<pre><code class="lang-powershell">python3 <span class="hljs-literal">-m</span> django -<span class="hljs-literal">-version</span>
</code></pre>
<p>La respuesta es el número de versión instalada por ejemplo si instalaste django==3.1.5 la respuesta es:</p>
<pre><code class="lang-powershell"><span class="hljs-number">3.1</span>.<span class="hljs-number">5</span>
</code></pre>
<p>Una vez que hayas instalado Django, puedes iniciar el nuevo proyecto siguiendo los siguientes pasos:</p>
<ol>
<li><p><strong>Crear un nuevo proyecto Django</strong>:</p>
<p> Ejecuta el siguiente comando, donde <code>nombre_del_proyecto</code> es el nombre que deseas darle a tu proyecto:</p>
<pre><code class="lang-powershell"> django<span class="hljs-literal">-admin</span> startproject nombre_del_proyecto
</code></pre>
<p> Esto creará un nuevo directorio con el nombre <code>nombre_del_proyecto</code> en tu ubicación actual, conteniendo la estructura básica de un proyecto Django.</p>
</li>
<li><p><strong>Navegar al directorio del proyecto:</strong></p>
<p> Mueve tu terminal al directorio del nuevo proyecto:</p>
<pre><code class="lang-powershell"> <span class="hljs-built_in">cd</span> nombre_del_proyecto
</code></pre>
<p> Dentro de este directorio, encontrarás una estructura de archivos y subdirectorios que componen la base de un proyecto Django. A continuación, te describo esta estructura:</p>
<pre><code class="lang-plaintext"> nombre_del_proyecto/
 │
 ├── nombre_del_proyecto/
 │   ├── __init__.py
 │   ├── asgi.py
 │   ├── settings.py
 │   ├── urls.py
 │   └── wsgi.py
 │
 └── manage.py
</code></pre>
<p> Detallando cada archivo y directorio:</p>
<ol>
<li><p><code>nombre_del_proyecto/</code> (el directorio externo): Es solo un contenedor para tu proyecto. Puedes renombrarlo a lo que quieras.</p>
</li>
<li><p><code>manage.py</code>: Es un script de línea de comandos que te permite interactuar con tu proyecto de diversas maneras, como iniciar el servidor de desarrollo, crear migraciones, ejecutar pruebas, entre otros.</p>
</li>
<li><p><code>nombre_del_proyecto/</code> (el directorio interno): Este es el paquete Python actual de tu proyecto. Es importante no renombrar este subdirectorio.</p>
<ul>
<li><p><code>__init__.py</code>: Este archivo vacío indica a Python que este directorio debe considerarse como un paquete o módulo, permitiendo que se puedan importar objetos desde él.</p>
</li>
<li><p><code>asgi.py</code>: Configuración para servidores ASGI (Asynchronous Server Gateway Interface) como Daphne. Esto permite que Django pueda manejar conexiones asíncronas.</p>
</li>
<li><p><code>settings.py</code>: Contiene la configuración de tu proyecto Django. Aquí defines cosas como la configuración de la base de datos, aplicaciones instaladas, middleware, plantillas y muchas otras opciones.</p>
</li>
<li><p><code>urls.py</code>: Define las URL patterns para tu proyecto. Básicamente, indica a Django qué vistas mostrar dependiendo de la ruta que se solicite.</p>
</li>
<li><p><code>wsgi.py</code>: Configuración para servidores WSGI (Web Server Gateway Interface) como Gunicorn. Es el punto de entrada estándar para servir tu aplicación en producción.</p>
</li>
</ul>
</li>
</ol>
</li>
</ol>
<p>    Esta es la estructura básica creada con <code>startproject</code>. A medida que tu proyecto crezca, agregarás más archivos y directorios a esta estructura, como directorios para plantillas, archivos estáticos, medios, y más. Además, cuando creas aplicaciones con <code>startapp</code>, cada una tendrá su propia estructura interna de directorios y archivos.</p>
<ol>
<li><p><strong>Ejecutar el servidor de desarrollo</strong>:</p>
<p> Django viene con un servidor de desarrollo ligero que te permite visualizar tu proyecto mientras trabajas en él. Puedes iniciar este servidor con el siguiente comando:</p>
<pre><code class="lang-powershell"> python manage.py runserver
</code></pre>
<p> Por defecto, el servidor se inicia en el puerto 8000. Para ver tu proyecto, abre un navegador y dirígete a <code>http://127.0.0.1:8000</code>. Deberías ver una página de bienvenida de Django, indicando que el proyecto se ha creado y está funcionando correctamente.</p>
<p> Cuando ejecutas el servidor de desarrollo de Django por primera vez <code>python manage.py runserver</code> justo después de haber creado un proyecto nuevo, es común recibir advertencias relacionadas con las migraciones. Estas advertencias suelen indicar que no has aplicado las migraciones iniciales de Django.</p>
<p> El motivo es que, al crear un nuevo proyecto, Django incluye algunas aplicaciones predeterminadas (como auth, contenttypes, sessions, admin, entre otras) que tienen modelos definidos y, por ende, requieren que sus estructuras se creen en la base de datos. Sin embargo, cuando el proyecto es creado, estas estructuras todavía no existen en la base de datos.</p>
<p> La advertencia suele ser como:</p>
<pre><code class="lang-plaintext"> You have 17 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): admin, auth, contenttypes, sessions.
 Run 'python manage.py migrate' to apply them.
</code></pre>
<p> Esto no significa que hay un error per se en tu proyecto, solo es una indicación de que necesitas establecer la base de datos inicial para las aplicaciones integradas.</p>
<p> Para resolverlo ejecuta el comando:</p>
<pre><code class="lang-powershell"> python manage.py migrate
</code></pre>
<p> Esto aplicará todas las migraciones pendientes, configurando la base de datos con las tablas y estructuras necesarias para las aplicaciones predeterminadas.</p>
<p> Una vez hecho esto, si vuelves a ejecutar <code>python manage.py runserver</code>, no deberías ver advertencias relacionadas con migraciones.</p>
<p> Es importante notar que, aunque estas advertencias no impiden que el servidor de desarrollo se ejecute y puedes visitar el sitio web en el navegador, ciertas funcionalidades (como el panel de administración) no funcionarán correctamente hasta que las migraciones iniciales sean aplicadas.</p>
<p> Por defecto, Django utiliza SQLite como sistema de gestión de bases de datos (DBMS). SQLite es una base de datos relacional que almacena los datos en un único archivo en el disco, lo que la hace excelente para el desarrollo debido a su simplicidad y portabilidad.<br /> En el archivo <code>settings.py</code> de un proyecto Django recién creado, verás una configuración de base de datos similar a la siguiente:</p>
<pre><code class="lang-python"> DATABASES = {
     <span class="hljs-string">'default'</span>: {
         <span class="hljs-string">'ENGINE'</span>: <span class="hljs-string">'django.db.backends.sqlite3'</span>,
         <span class="hljs-string">'NAME'</span>: BASE_DIR / <span class="hljs-string">"db.sqlite3"</span>,
     }
 }
</code></pre>
<p> <code>ENGINE</code> indica el backend de la base de datos que Django debe usar, en este caso, <code>django.db.backends.sqlite3</code> para SQLite. <code>NAME</code> especifica la ruta y el nombre del archivo donde se almacenarán los datos de SQLite. Por defecto, es <code>db.sqlite3</code> en el directorio base de tu proyecto.</p>
<p> Si bien SQLite es adecuado para el desarrollo, es importante considerar otros sistemas de gestión de bases de datos más robustos, como PostgreSQL, MySQL o MariaDB, cuando trasladas tu proyecto a un entorno de producción. Django ofrece soporte integrado para estos DBMS, y cambiar entre ellos implica ajustes mínimos en la configuración <code>DATABASES</code> en <code>settings.py</code>.</p>
</li>
<li><p><strong>Crear un usuario administrativo (Superusuario)</strong>:</p>
<p> Para crear el primer usuario administrativo (o superusuario) en Django, que tendrá acceso total al sitio de administración de Django, sigue los siguientes pasos:</p>
<ul>
<li><p><strong>Crea el superusuario.</strong></p>
<p>  Ejecuta el siguiente comando:</p>
<pre><code class="lang-powershell">  python manage.py createsuperuser
</code></pre>
</li>
<li><p><strong>Sigue las instrucciones en la consola.</strong></p>
<p>  Se te pedirá que introduzcas un nombre de usuario, dirección de correo electrónico y una contraseña. Asegúrate de recordar o guardar en un lugar seguro esta contraseña, ya que la necesitarás para acceder al sitio administrativo.</p>
<ul>
<li><p>Nota: Si, por alguna razón, deseas especificar el nombre de usuario, correo electrónico o contraseña directamente en el comando, puedes hacerlo de la siguiente manera:</p>
<pre><code class="lang-powershell">  python manage.py createsuperuser -<span class="hljs-literal">-username</span>=john -<span class="hljs-literal">-email</span>=john@example.com
</code></pre>
<p>  Luego se te pedirá que ingreses una contraseña.</p>
</li>
</ul>
</li>
<li><p><strong>Accede al sitio administrativo.</strong></p>
<p>  Una vez que hayas creado el superusuario, puedes iniciar tu servidor de desarrollo <code>python manage.py runserver</code> y luego acceder al sitio administrativo en tu navegador, por lo general en la dirección <code>http://127.0.0.1:8000/admin/</code>. Utiliza las credenciales del superusuario que acabas de crear para iniciar sesión.<br />  Ahora tendrás acceso completo al panel de administración de Django y podrás gestionar tus modelos, usuarios y grupos, entre otras cosas.</p>
</li>
</ul>
</li>
<li><p><strong>Iniciar una nueva aplicación</strong> (opcional):</p>
<p> Django utiliza el concepto de "aplicaciones" para ayudar a modularizar el código. Una aplicación es simplemente un módulo de Django que realiza una función específica. Por ejemplo, podrías tener una aplicación para manejar la autenticación de usuarios, otra para manejar el blog, etc.</p>
<p> Para crear una nueva aplicación, usa el siguiente comando, donde <code>nombre_de_la_app</code> es el nombre de tu aplicación:</p>
<pre><code class="lang-powershell"> python manage.py startapp nombre_de_la_app
</code></pre>
<p> Esto creará un nuevo directorio con el nombre <code>nombre_de_la_app</code> dentro de tu proyecto, conteniendo la estructura básica de una aplicación Django.</p>
<p> A continuación, te describo la estructura básica generada:</p>
<pre><code class="lang-plaintext"> nombre_de_la_app/
 │
 ├── migrations/
 │   └── __init__.py
 │
 ├── __init__.py
 ├── admin.py
 ├── apps.py
 ├── models.py
 ├── tests.py
 └── views.py
</code></pre>
<p> A continuación, un breve resumen de cada archivo y directorio:</p>
<ol>
<li><p><code>__init__.py</code>: Este archivo vacío indica a Python que el directorio debe considerarse como un paquete o módulo. Gracias a este archivo, puedes importar objetos desde otros módulos dentro de esta aplicación.</p>
</li>
<li><p><code>migrations/</code>: Este directorio almacena las migraciones de la base de datos relacionadas con la aplicación. Las migraciones son cómo Django guarda los cambios que realizas en tus modelos (agregar un campo, eliminar un modelo, etc.) para luego aplicarlos a la base de datos.</p>
<ul>
<li><code>__init__.py</code>: Al igual que el archivo anterior, este archivo vacío convierte el directorio <code>migrations</code> en un paquete o módulo de Python.</li>
</ul>
</li>
<li><p><code>admin.py</code>: Aquí defines el comportamiento y la apariencia de tu aplicación en el sitio administrativo de Django. Es decir, cómo se mostrarán tus modelos y otros componentes relacionados en la interfaz de administración que Django proporciona automáticamente.</p>
</li>
<li><p><code>apps.py</code>: Contiene la configuración de la aplicación. Por defecto, solo contiene una clase que representa la configuración de esta aplicación en particular.</p>
</li>
<li><p><code>models.py</code>: Define los modelos de tu aplicación. Un modelo en Django representa una tabla en la base de datos y define los campos y comportamientos esenciales de los datos que deseas almacenar.</p>
</li>
<li><p><code>tests.py</code>: Puedes escribir pruebas unitarias para tu aplicación aquí. Django tiene su propio framework de pruebas que facilita escribir y ejecutar pruebas para tu código.</p>
</li>
<li><p><code>views.py</code>: Define las vistas de tu aplicación. En Django, una vista es una función o clase que toma una solicitud web y devuelve una respuesta. Las vistas se encargan de procesar los datos y prepararlos para ser mostrados en una plantilla o devolverlos como JSON, entre otras cosas.</p>
</li>
</ol>
</li>
</ol>
<p>    Con el tiempo, es posible que agregues más archivos y directorios a esta estructura básica, dependiendo de las necesidades de tu aplicación, como <a target="_blank" href="http://forms.py"><code>forms.py</code></a> para formularios, <a target="_blank" href="http://urls.py"><code>urls.py</code></a> para las rutas específicas de la aplicación, directorios de plantillas, archivos estáticos, etc.</p>
<p>    Después de crear una nueva aplicación en tu proyecto Django, probablemente definas algunos modelos en el archivo <code>models.py</code> de esa aplicación. Una vez que hayas definido tus modelos, sigue estos pasos para crear y aplicar las migraciones:</p>
<ol>
<li><p><strong>Crear archivos de migración.</strong><br /> Luego de realizar cambios en tus modelos, necesitas generar un archivo de migración para esos cambios. Usa el siguiente comando para hacerlo:</p>
<pre><code class="lang-powershell"> python manage.py makemigrations nombre_de_la_app
</code></pre>
<p> En este comando, reemplaza <code>nombre_de_la_app</code> con el nombre real de tu aplicación. Esto generará archivos de migración en el directorio <code>migrations/</code> de tu aplicación que describen cómo hacer (y deshacer) los cambios que has hecho en los modelos.</p>
</li>
<li><p><strong>Revisar las migraciones</strong> (opcional pero recomendado)<strong>:</strong></p>
<p> Es una buena idea echar un vistazo a los archivos de migración generados en <code>nombre_de_la_app/migrations/</code> para asegurarte de que Django ha interpretado tus cambios de la manera que esperabas.</p>
</li>
<li><p><strong>Aplicar migraciones:</strong></p>
<p> Una vez creados los archivos de migración, debes aplicarlos para reflejar los cambios en la base de datos:</p>
<pre><code class="lang-powershell"> python manage.py migrate
</code></pre>
<p> Este comando aplicará todas las migraciones pendientes, pero si solo deseas aplicar las migraciones de tu nueva aplicación, puedes especificarlo:</p>
<pre><code class="lang-powershell"> python manage.py migrate nombre_de_la_app
</code></pre>
<p> Y con eso, deberías haber creado y aplicado con éxito las migraciones para tu nueva aplicación en Django.</p>
<p> No olvides que cada vez que realices cambios en tus modelos, deberás repetir este proceso para asegurarte de que la base de datos refleje esos cambios.</p>
</li>
</ol>
<p>¡Gracias por acompañarnos en este pequeño tutorial sobre Django! Espero que sea de gran ayuda para tus proyectos. Recuerda que el aprendizaje es un viaje continuo, y hay mucho más por descubrir en el mundo de Django y el desarrollo web. Mantente atento, porque pronto regresaremos con más tutoriales, consejos y trucos para ayudarte en tu camino como desarrollador. ¡Hasta la próxima!</p>
]]></content:encoded></item></channel></rss>