Рубрики
Без рубрики

Aprendiendo Django #1

Antes de Ver El Codigo (Se que estas aca por eso), Emepecemos por intender algunas cosas. Qu … Tagged с Python, WebDev, Backend, Beginters.

Antes de Ver El Codigo (Se que estas aca por eso), Emepecemos por intender algunas cosas.

Que es django?

Django es El (Si, Enususculas) Структура Para Desarrollo Web. ESTA ESCRITO EN PYTHON, ES DE CODIGO ABIERTO Y UTILIZA LA ARQUITECTURA MVT (Model-View-Template).

ESTA Licenciado Bajo BSD, Y Su Nombre Proviene (Aparentemente) de un guitarrista llamado django inhardt.

Нет идеи Tengo ni que tiene que ver una cosa con la otra, pero esa es la distoria.

La Meta de django (Como la de Otros Frameworks), Es la de Fareilitar La Creacion de Aplicaciones Web Complejas. Важные сабля que la filosofia detras de django es la de el reluso, la conectividad, la extensibilidad, el desarrollo rapido y el el principio de dry (не повторяйте себя).

Creemos un proyecto

La Teoria y La Historia Pueden Sonar Lindas, Pero La Practica es La Que Define si lo usariamos o нет.

Primero Que Nada, Vamos A Hacer Lo De Siempre: Creemos un enterorno virtual:

pip install virtualenv
virtualenv .venv

Si estas en linux

source ./venv/bin/activate

Si estas en windows y usas cmd

.\.venv\Scripts\activate.bat

Si estas en windows y usas powershell

.\.venv\Scripts\activate.ps1

Tene en cuenta que si tenes python 2.7 instalado, vas a tener que quemplazar todo lo que yo escriba como “pip” por “pip3” y “python” python3 “ya que langas distibuciones aun estan usando esa veer vieja y dem , y le colocan ese Alias Аль Бинарио.

Por ultimo, instalamos django

pip install django

Ya Con el Entorno Preparado y el paquete instalado, metamos las manos en la masa.

Iniciar on proyecto en django es muy sencillo. Alguna Vez Hiciste Algo Con React? Si La Respuesta Es Si, Te Acordaras del Famoso NPX Create-React-App Some_App_Name Анкет Con django la cosa va por ahi:

django-admin startproject nomina_empleados

Esto generara un Directorio nuevo con el nombre indicado que deberia edse mas o menos asi:

.
└── nomina_empleados
    ├── manage.py
    └── nomina_empleados
        ├── __init__.py
        ├── asgi.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py

La Primera pregunta Que nos viene a la cabeza es “por que kay dos Режиссеры Конэль -Мисмо Нобре?” EL Primer Directorio Funciona Como Un Compendor Para Nuestro Proyecto. Podes Cambiarle El Nombre A “SRC”, “Compenedor”, о Lo que Quieras. Al que no podes cambiarle el nombre es a la carpeta que esta al mismo nivel que Эль manage.py . Porque ya esta Identificada Como la Приложение Приложение y el solo hecho de cambiarle el Nombre, haria Que El Proyecto No Funcione Mas.

Hagamos un Repaso Rapido de Que estamos viendo:

  • Manage.py: Contiene las utilidades de django (ejecuta python Manage.py help Пара Маса Детлл). Desde Este, Podemos ejecutar el Proyecto, Aplicar Migraciones A La Base de Datos, тест ejecutar и т. Д. Su nombre ya te esta diciendo algo …
  • __init__.py: Es un archivo acio, usado para que python identifique al directorio como un paquete.
  • wsgi.py: como lo indican sus siglas (“Интерфейс шлюза веб -сервера”) se trata de una Interfaz que permite separar el codigo de la aplicacion de el codigo del servidor.
  • asgi.py: se trata de una Interfaz asincrona («Асинхронный интерфейс шлюза сервера») аналогичный wsgi.
  • настройки.py: Es el archivo que contiene todo el codigo de configuracion de nuestro proyecto.
  • urls.py: Contiene todas las urls enderibles en el proyecto.

Джанго администратор

Entre Las Tantas indladades de django, nos inntramos con el panel de armession. ООН панель Desde el Que Podremos Hacer Operaciones Crud A Nuestras Apps, Entre Otras Cosas.

Primero Que Nada, Debemos de Hacer El Primer мигрировать de nuestro proyecto para que se creen, en la base de datos, las tablas crobessientes.

Cual Base de Datos? Буэно, Casi Se Me Olvida Mencionarlo. Django trae su propio orm para trabajar con una bd, y por defecto usa sqlite3. Esto Podes verlo en el Apartado “Del настройки.py

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

POR SUPUESTO QUE PODES USAR EL MOTOR DE BASES DATOS QUE VOS QUIERAS, Pero Eso te Lo Voy A Mostrar En Otro Post.

Volviendo a lo nuestro, debemos ejecutar lo siguiente:

python manage.py makemigrations && python manage.py migrate

Y POR CONSOLA, VAMOS A VER:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
  Applying contenttypes.0001_initial... OK
  Applying auth.0001_initial... OK
  Applying admin.0001_initial... OK
  Applying admin.0002_logentry_remove_auto_add... OK
  Applying admin.0003_logentry_add_action_flag_choices... OK
  Applying contenttypes.0002_remove_content_type_name... OK
  Applying auth.0002_alter_permission_name_max_length... OK
  Applying auth.0003_alter_user_email_max_length... OK
  Applying auth.0004_alter_user_username_opts... OK
  Applying auth.0005_alter_user_last_login_null... OK
  Applying auth.0006_require_contenttypes_0002... OK
  Applying auth.0007_alter_validators_add_error_messages... OK
  Applying auth.0008_alter_user_username_max_length... OK
  Applying auth.0009_alter_user_last_name_max_length... OK
  Applying auth.0010_alter_group_name_max_length... OK
  Applying auth.0011_update_proxy_permissions... OK
  Applying auth.0012_alter_user_first_name_max_length... OK
  Applying sessions.0001_initial... OK

Идеально! Todo Salio Bien Y Ahhora, Al Mismo Nivel del Manage.py , Tenemos un archivo db.sqlite3 que es, ni mas ni menos, que nuestra base de datos.

Lo Que Quiero Mostrarte, Es El Panel De Administracion.

python manage.py runserver

ESO VA A EJECUTAR NUETRO PROYECTO Y, AL DIRIGIRNOS A http://127.0.0.1:8000/ debemos de ver esto:

Si NOS DIRIGIMOS A LA RUTA DEL ADMIN: http://127.0.0.1:8000/admin/

Nos mostraria esto:

Cual Es el usuario y la contraseña? Нет Tenemos Eso Dado Que django no crea usuarios por defecto. Para crearlos, paramos la ejecucion contrl+c y ejecutamos:

python manage.py createsuperuser

Debemos de Aportar Todos Los Datos Que nos olicita. Al Finalizar, Relanzamos Nuestro proyecto e iniciamos sesion con los datos cargados.

Aumentamos la apuesta: Creamos una applicacion

Lo Que vimos hasta ahora fue: deplegar un proyecto (startproject), ventender que viene con, aplicar migraciones y crear un super usuario. Django nos permite modularizar el sistema en “aplicaciones”. Vamos Crear Una:

python manage.py startapp empleados

Si Vemos el Arbol de Regirectios, Veriamos algo asi:

.
└── nomina_empleados
    ├── empleados
    │   ├── __init__.py
    │   ├── admin.py
    │   ├── apps.py
    │   ├── migrations
    │   │   └── __init__.py
    │   ├── models.py
    │   ├── tests.py
    │   └── views.py
    ├── manage.py
    ├── db.sqlite3
    └── nomina_empleados
        ├── __init__.py
        ├── asgi.py
        ├── settings.py
        ├── urls.py
        └── wsgi.py

SE HA GENERADO UN DIREGENIO NUEVO, Con Varios Archivos Python.

  • admin.py: permite configurar algunas cosas de nuestra aplicacion al momono de mostrarse en EL Panel De Administracion
  • Apps.py: Definicion y Configuracion de la App
  • Миграции/: Ene Este Directorio Estaran Todos Los Archivos Generados Al Momento de Hacer Una Migracion A La Base de Datos (Ya Veremos Esto Mas Adelante)
  • models.py: en este archivo, se define el modelo de datos de nuestra aplicacion
  • tests.py: ACA Definimos Los Tests Para Nuestra Aplicacion
  • views.py: finalmente, en este archivo definimos las vistas, que son funciones que reciben una peticion desde una url y devuelven una respuesta.

Para Ir Cerrando un Poco, Dentro del Archivo модели.py de “empleados” colocamos esto:

from django.db import models


class Empleado(models.Model):

    numero_legajo = models.IntegerField("Numero de Legajo", primary_key=True, blank=False, null=False)
    nombre = models.CharField("Nombre", max_length=60, blank=False, null=False)
    apellido = models.CharField("Apellido", max_length=60, blank=False, null=False)
    salario = models.FloatField("Salario", blank=False, null=False, default=500)


    class Meta:
        verbose_name = 'Empleado'
        verbose_name_plural = 'Empleados'

    def __str__(self):
        return f"{self.apellido.upper()}, {self.nombre}"

En el archivo admin.py de empleados debemos de Registrar el Modelo:

from django.contrib import admin
from .models import Empleado

admin.site.register(Empleado)

Y POR ULTIMO, Регистратор Debemos Toda La App Dentro del настройки.py Анкет Para Esto, nos Vamos hasta La Lista Con el Nombre de Insted_apps y al final agregamos lo siguiente.

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'empleados'
]

Nuevamente vamos hacer las migraciones:

python manage.py makemigrations

Con esto vamos a ver el siguiente mensaje:

Migrations for 'empleados':
  empleados/migrations/0001_initial.py
    - Create model Empleado

Django detecto nuestra aplicacion, verifico que no hay una tabla en la base de datos para esta misma y creamio a crear el modelo. Pero eso no se va aplicar hasta que que hagamos un migrate.

python manage.py migrate

Y Este Es El Mensaje de Revisionacion:

Operations to perform:
  Apply all migrations: admin, auth, contenttypes, empleados, sessions
Running migrations:
  Applying empleados.0001_initial... OK

Vamos nuevamente al admin.py y …

Ya Vemos Nuestra Aplicacion. Ahora, Vamos a vergar agregar un empleado:

  1. Нажмите en “empleados”
  2. Нажмите en el el boton “добавить empleado”
  3. Rellenar El Formulario
  4. Нажмите en “Сохранить”

Si Damos Click En Nombre Del Empleado Creado (тестирование En Mi Caso), Accedemos al formulario donde podemos editar alguno de sus campos y hasta podemos borrarlo.

ESO ES TODO PORAHORA. Espero Que Hayas Aprendido Bastante. Quedate antento/a Que esta semana, voy a estar subiendo mas!

Si El Contenido te Gusto, No Te olvides de reaccionar, dejar un comentario o smoadememe copartir. Ayudame A Que El Conocimiento Llegue Aun Mas Lejos!

Оригинал: “https://dev.to/gareisdev/aprendamos-django-1-cl0”