Comandos y configuraciones imprescindibles al momento de crear cualquier aplicación en Django

- Andrés Cruz

In english
Comandos y configuraciones imprescindibles al momento de crear cualquier aplicación en Django

En esta entrada quiero resumir varios comandos y procesos que deberíamos de seguir al momento de crear una aplicación en Django; son comandos y procesos muy comunes que necesitamos realizar en la mayoría de los casos.

Crear un ambiente virtual

Para desarrollar cualquier aplicación en Python en general, y en Django no es la excepción, debemos de crear un espacio virtual o ambiente virtual en la cual podamos trabajar con versiones específicas en caso de que sea necesario de de nuestros paquetes; por ejemplo, versiones específicas de Django, Djongo y DRF; para esto:

virtualenv vchannels

En donde recuerda que vchannels es el nombre del virtualenv, recuerda que para esto tienes que tener instalado el paquete llamado virtualenv de manera global en tu equipo, generalmente este debería ser de los pocos o el único paquete que instales de manera global:

pip install virtualenv 

Activar el espacio virtual

Una vez que logramos el anterior paso, lo siguiente que tenemos que hacer es activar nuestro ambiente; para eso, dentro del ambiente virtual creado anteriormente:

Si estas en windows

cd Scripts
activate.bat

Si estás en Mac o Linux:

source bin/activate
Instalar Django

Obviamente si vamos a desarrollar en Django, vamos a necesitar instalar el paquete correspondiente al mismo mediante la pip:

pip install Django

Si fuera una versión especifica del framework o de cualquier paquete en general.

pip install Django==4.1

Crear un proyecto en Django

Ya hablamos anteriormente sobre la diferencia de proyecto y app en Django, y recordemos que el elemento global sería el proyecto, el cual vamos a crear a continuación:

django-admin startproject mychannels

Luego copiamos solamente el proyecto a nuestro VSC y activamos el ambiente virtual desde allí para seguir trabajando:

..\Scripts\activate

Crear una aplicación en Django

Si ya tenemos nuestro proyecto, lo siguiente que necesitamos es nuestro aplicacion; por ejemplo, una app llamada chat, si estás empleando VSC y realizastes la instalación anterior que era arrastrar solamente el proyecto y no el espacio virtual, solamente tienes que ejecutar el siguiente comando sin necesidad de moverte a otra carpeta:

python manage.py startapp chat

Configurar una base de datos en MySQL

Seamos sinceros, MySQL es nuestra base de datos por excelencia en la mayoría de aplicaciones web yo en dia, a sea la versión de Oracle o la versión open source llamada MariaDB, es el motor de base de datos que empleamos en cualquier ambiente web como PHP, Python, Node, etc y por lo tanto en Django no puede ser la excepción; lo primero que vamos a hacer es crear la configuración en settings:

DATABASES = {
    'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'testdjangochannels',
            'USER': 'root',
            'PASSWORD': '',
            'HOST': 'localhost',
            'PORT': '3306',

    }
}

Puedes emplear el conector que te provee por defecto Django a partir de la versión 3, pero si tienes problemas con el mismo, puedes emplear una vicaria te llamada PyMySQL; lo instalamos en nuestro proyecto:

pip install pymysql

Y lo configuramos en el archivo llamado __init__.py del modulo que tenemos dentro de nuestro proyecto con el mismo nombre del proyecto:

import pymysql
pymysql.version_info = (1, 4, 0, "final", 0)
pymysql.install_as_MySQLdb()

Muy pendiente de colocar la versión correcta del conector para evitar estos errores:

raise ImproperlyConfigured('mysqlclient 1.4.0 or newer is required; you have %s.' % Database.__version__)

Crear un súper usuario

Como debes saber en este punto, Django ya nos ofrece un sencillo y efectivo módulo de administración bastante extensible; para poder emplear el mismo, necesitamos crear un súper usuario:

python .\manage.py createsuperuser

Muy importante haber ejecutado las migraciones de las aplicaciones que tenemos definidas por defecto.

Crear nuestro primer modelo

En este punto ya tenemos nuestro core completamente funcional en nuestro proyecto en Django, core que puedes emplear para desarrollar cualquier tipo de aplicación pero para extendernos un poco más, vamos a crear un modelo que seguramente también te interesa mucho; para eso tenemos que ubicar alguna de las aplicaciones que pudieras haber creado, que en mi caso solamente seria una, la llamada chat a la cual va a emplear este modelo para cumplir su propósito de creación:

from django.contrib.auth.models import User
class Room(models.Model):
    name = models.CharField(max_length=60, unique=True)
    users = models.ManyToManyField(User,related_name='rooms_joined', blank=True)

    def __str__(self):
        return self.name

Crear migraciones y ejecutar migraciones 

Con nuestro modelo ,ahora le tenemos que indicarle a django que cree las o la migración:

python manage.py migrate

Recordemos que esto solamente nos genera un archivo que es el que Django va a emplear a un SQL para luego ejecutar en la base de datos configurada anteriormente; ahora necesitamos hacer ese último paso señalado anteriormente; para eso:

python manage.py makemigrations

Registrar nuestro modelo en el admin para que sea gestionable

Ya con nuestro modelo y tabla creados con o que hicimos anteriormente, ahora podemos emplear el mismo, por ejemplo, en la aplicación admin que tenemos por defecto; para eso tenemos que ubicar el archivo llamado admin.py de nuestra app e indicar que queremos emplear nuestro modelo en el admin:

@admin.register(Room)
class RoomAdmin(admin.ModelAdmin):
    pass

Crear URLs

Sin importar lo queremos quieras hacer, seguramente vas a necesitar consumir alguna lógica que realicemos, para eso necesitamos un archivo de rutas, prácticamente para poder consumir cualquier cosa de nuestro MTV mediante el navegador del usuario; por ejemplo, una supuesta función index que debería estar en nuestro vienes.py de nuestra aplicación, podemos registrar la misma en un archivo que por convención vamos a llamar como urls.py y que va a entrar dentro de nuestra app:

path('chat/', include('chat.urls')),
from django.urls import path
from . import views
app_name = 'chat'
urlpatterns = [
 path('room/<int:room_id>/', views.room, name='room'),

Y ahora lo registramos de manera global en nuestro proyecto:

from django.contrib import admin from django.urls import path, include urlpatterns = [    path('admin/', admin.site.urls),    path('chat/', include('chat.urls')), ]

Extra: Crear un CRUD

A partir de este punto ya tenemos nuestro proyecto base, el esqueleto de nuestra app; por lo tanto ya puedes crear tu magnífica aplicación en Django que puede hacer lo que tú quieras, en donde el único límite es tu imaginación; por ejemplo, el ya archiconocido CRUD en los cuales tenemos varias publicaciones:

  1. Paginación de tablas (registros) en Django empleando Bootstrap 4 o 5
  2. En desarrollo...

Que usan un template maestro como el siguiente:

 <!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>

    {% load static %}

    <link rel="stylesheet" href="{% static 'bootstrap/dist/css/bootstrap.min.css' %}">
    <link rel="stylesheet" href="{% static 'css/custom.css' %}">
    <link rel="stylesheet" href="{% static 'fontawesome/css/all.min.css' %}">

</head>

<body>

    <div class="container my-3">
        {% block content %}

        {% endblock %}
    </div>

    <script src="{% static 'js/jquery-3.4.1.min.js' %}"></script>
    <script src="{% static 'bootstrap/dist/js/bootstrap.min.js' %}"></script>
    <script src="{% static 'js/store.js' %}"></script>

</body>

</html>
Andrés Cruz

Desarrollo con Laravel, Django, Flask, CodeIgniter, HTML5, CSS3, MySQL, JavaScript, Vue, Android, iOS, Flutter

Andrés Cruz en Udemy

Acepto recibir anuncios de interes sobre este Blog.