Diferencias entre las revisiones 1 y 10 (abarca 9 versiones)
Versión 1 con fecha 2020-10-06 16:24:51
Tamaño: 140
Comentario:
Versión 10 con fecha 2020-10-06 19:03:11
Tamaño: 5680
Comentario:
Los textos eliminados se marcan así. Los textos añadidos se marcan así.
Línea 2: Línea 2:
Línea 6: Línea 5:
== Instalación: ==
=== Preparando el entorno de trabajo ===
* Instalar módulo para crear entornos virtuales en Python (3):
Línea 7: Línea 9:
== Instalación: ==
=== Preparando el entorno virtual ===
{{{
# apt install python3-venv
}}}
* Creamos una carpeta para crear nuestros proyectos Django.

{{{
$ mkdir django
$ cd django
}}}
* Creamos un entorno virtual para Python 3.8 (dependerá la versión que tengan instalada):

{{{
$ python3 -m venv venv3.8
}}}
* Activamos el entorno virtual;

{{{
$ source venv3.8/bin/activate
}}}
Para desactivarlo:

{{{
$ deactivate
}}}
* Utilizamos '''pip''' para gestionar los módulos en el entorno virtual:

{{{
$ pip list

Package Version
------------- -------
pip 20.1.1
pkg-resources 0.0.0
setuptools 44.0.0
}}}
=== Django ===
* Instalamos '''Django''' (última versión por defecto), instalará también algunas dependencias:

{{{
$ pip install django

Collecting django
  Downloading Django-3.1.2-py3-none-any.whl (7.8 MB)
     |████████████████████████████████| 7.8 MB 1.5 MB/s
Collecting sqlparse>=0.2.2
  Using cached sqlparse-0.3.1-py2.py3-none-any.whl (40 kB)
Collecting pytz
  Downloading pytz-2020.1-py2.py3-none-any.whl (510 kB)
     |████████████████████████████████| 510 kB 13.0 MB/s
Collecting asgiref~=3.2.10
  Using cached asgiref-3.2.10-py3-none-any.whl (19 kB)
Installing collected packages: sqlparse, pytz, asgiref, django
Successfully installed asgiref-3.2.10 django-3.1.2 pytz-2020.1 sqlparse-0.3.1
}}}
* Nos quedará la siguiente lista de módulos instalados:

{{{
$ pip list

Package Version
------------- -------
asgiref 3.2.10
Django 3.1.2
pip 20.1.1
pkg-resources 0.0.0
pytz 2020.1
setuptools 44.0.0
sqlparse 0.3.1
}}}
* Si quisieramos instalar otro entorno virtual, ya sea en la misma máquina o en otra, podemos exportar la lista de módulos y sus versiones para recrear el entorno. Con la opción '''freeze''' de pip podemos obtener la lista y redirigir a un archivo, el que luego podemos utilizar para instalar los módulos en el nuevo entorno:

{{{
// guardar lista de módulos
$ pip freeze > requirements.txt

// instalar lista.
$ pip install -r requirements.txt
}}}
= Proyecto1 =
Este ejemplo muestra el paso a paso (con Django ya instalado) la evolución de un primer proyecto.

== Creación del proyecto ==
Al ubicarnos en la carpeta '''django''' para los proyectos antes creada tenemos hasta ahora:

{{{
$ ls -l
-rw-r--r-- 1 amvaldesj amvaldesj 59 Oct 6 09:35 requirements.txt
drwxr-xr-x 6 amvaldesj amvaldesj 4096 Oct 6 09:30 venv3.8
}}}
Creamos entonces en este nivel el proyecto que nombraremos '''proyecto1''':

{{{
$ django-admin startproject proyecto1
}}}
Y la carpeta de trabajo nos queda:

{{{
$ ls -l
drwxr-xr-x 3 amvaldesj amvaldesj 4096 Oct 6 09:36 proyecto1
-rw-r--r-- 1 amvaldesj amvaldesj 59 Oct 6 09:35 requirements.txt
drwxr-xr-x 6 amvaldesj amvaldesj 4096 Oct 6 09:30 venv3.8
}}}
Ingresamos a la carpeta '''proyecto1''' para trabajarlo:

{{{
$ cd proyecto1
$ ls -l
-rwxr-xr-x 1 amvaldesj amvaldesj 665 Oct 6 09:36 manage.py
drwxr-xr-x 2 amvaldesj amvaldesj 4096 Oct 6 09:36 proyecto1
}}}
Podemos probar como se ve hasta ahora ejecutando el script '''manager.py''', el cual tiene múltiples opciones y una de ellas es levantar un servicio web local:

{{{
$ python manage.py runserver
}}}
Y abrimos en una navegador web la url '''http://127.0.0.1:8000/'''', debería aparecer una página de bienvenida y un cohete despegando... :D

== Uso de Base de Datos ==
Las configuraciones de Django se realizan en el archivo '''settings.py''', el que en nuestro ejemplo se encuentra '''proyecto1/settings.py''''.

Si usamos alguna base de datos, se debe modificar las opciones del motor de base de datos a utilizar y que por defecto es '''sqlite'''. Vamos a usar esta por defecto.

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

Realizamos la carga inicial de la base de datos. Se crearan las tablas iniciales que requiere Django:

{{{
$ python manage.py migrate

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
}}}

'''TIP''' Si modificamos/creamos modelos (Model) debemos primero preparar la migración com '''makemigrations''' y luego aplicar '''migrate''':

{{{
$ python manage.py makemigrations
$ python manage.py migrate
}}}

Primeros pasos con Django

Introducción:

Instalación:

Preparando el entorno de trabajo

* Instalar módulo para crear entornos virtuales en Python (3):

# apt install python3-venv

* Creamos una carpeta para crear nuestros proyectos Django.

$ mkdir django
$ cd django

* Creamos un entorno virtual para Python 3.8 (dependerá la versión que tengan instalada):

$ python3 -m venv venv3.8

* Activamos el entorno virtual;

$ source venv3.8/bin/activate

Para desactivarlo:

$ deactivate

* Utilizamos pip para gestionar los módulos en el entorno virtual:

$ pip list

Package       Version
------------- -------
pip           20.1.1
pkg-resources 0.0.0
setuptools    44.0.0

Django

* Instalamos Django (última versión por defecto), instalará también algunas dependencias:

$ pip install django

Collecting django
  Downloading Django-3.1.2-py3-none-any.whl (7.8 MB)
     |████████████████████████████████| 7.8 MB 1.5 MB/s
Collecting sqlparse>=0.2.2
  Using cached sqlparse-0.3.1-py2.py3-none-any.whl (40 kB)
Collecting pytz
  Downloading pytz-2020.1-py2.py3-none-any.whl (510 kB)
     |████████████████████████████████| 510 kB 13.0 MB/s
Collecting asgiref~=3.2.10
  Using cached asgiref-3.2.10-py3-none-any.whl (19 kB)
Installing collected packages: sqlparse, pytz, asgiref, django
Successfully installed asgiref-3.2.10 django-3.1.2 pytz-2020.1 sqlparse-0.3.1

* Nos quedará la siguiente lista de módulos instalados:

$ pip list

Package       Version
------------- -------
asgiref       3.2.10
Django        3.1.2
pip           20.1.1
pkg-resources 0.0.0
pytz          2020.1
setuptools    44.0.0
sqlparse      0.3.1

* Si quisieramos instalar otro entorno virtual, ya sea en la misma máquina o en otra, podemos exportar la lista de módulos y sus versiones para recrear el entorno. Con la opción freeze de pip podemos obtener la lista y redirigir a un archivo, el que luego podemos utilizar para instalar los módulos en el nuevo entorno:

// guardar lista de módulos
$ pip freeze > requirements.txt

// instalar lista.
$ pip install -r requirements.txt

Proyecto1

Este ejemplo muestra el paso a paso (con Django ya instalado) la evolución de un primer proyecto.

Creación del proyecto

Al ubicarnos en la carpeta django para los proyectos antes creada tenemos hasta ahora:

$ ls -l
-rw-r--r-- 1 amvaldesj amvaldesj   59 Oct  6 09:35 requirements.txt
drwxr-xr-x 6 amvaldesj amvaldesj 4096 Oct  6 09:30 venv3.8

Creamos entonces en este nivel el proyecto que nombraremos proyecto1:

$ django-admin startproject proyecto1

Y la carpeta de trabajo nos queda:

$ ls -l
drwxr-xr-x 3 amvaldesj amvaldesj 4096 Oct  6 09:36 proyecto1
-rw-r--r-- 1 amvaldesj amvaldesj   59 Oct  6 09:35 requirements.txt
drwxr-xr-x 6 amvaldesj amvaldesj 4096 Oct  6 09:30 venv3.8

Ingresamos a la carpeta proyecto1 para trabajarlo:

$ cd proyecto1
$ ls -l
-rwxr-xr-x 1 amvaldesj amvaldesj  665 Oct  6 09:36 manage.py
drwxr-xr-x 2 amvaldesj amvaldesj 4096 Oct  6 09:36 proyecto1

Podemos probar como se ve hasta ahora ejecutando el script manager.py, el cual tiene múltiples opciones y una de ellas es levantar un servicio web local:

$ python manage.py runserver

Y abrimos en una navegador web la url http://127.0.0.1:8000/', debería aparecer una página de bienvenida y un cohete despegando... :D

Uso de Base de Datos

Las configuraciones de Django se realizan en el archivo settings.py, el que en nuestro ejemplo se encuentra proyecto1/settings.py'.

Si usamos alguna base de datos, se debe modificar las opciones del motor de base de datos a utilizar y que por defecto es sqlite. Vamos a usar esta por defecto.

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

Realizamos la carga inicial de la base de datos. Se crearan las tablas iniciales que requiere Django:

$ python manage.py migrate

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

TIP Si modificamos/creamos modelos (Model) debemos primero preparar la migración com makemigrations y luego aplicar migrate:

$ python manage.py makemigrations
$ python manage.py migrate

django (última edición 2021-06-03 20:46:27 efectuada por AlejandroValdes)