Tamaño: 3780
Comentario:
|
Tamaño: 5664
Comentario:
|
Los textos eliminados se marcan así. | Los textos añadidos se marcan así. |
Línea 7: | Línea 7: |
* Instalar módulo para crear entornos virtuales en Python (3): | Instalar módulo para crear entornos virtuales en Python (3): |
Línea 12: | Línea 12: |
* Creamos una carpeta para crear nuestros proyectos Django. | Creamos una carpeta para crear nuestros proyectos Django. |
Línea 18: | Línea 18: |
* Creamos un entorno virtual para Python 3.8 (dependerá la versión que tengan instalada): | Creamos un entorno virtual para Python 3.8 (dependerá la versión que tengan instalada): |
Línea 23: | Línea 23: |
* Activamos el entorno virtual; | Activamos el entorno virtual; |
Línea 33: | Línea 33: |
* Utilizamos '''pip''' para gestionar los módulos en el entorno virtual: | Utilizamos '''pip''' para gestionar los módulos en el entorno virtual: |
Línea 45: | Línea 45: |
* Instalamos '''Django''' (última versión por defecto), instalará también algunas dependencias: | Instalamos '''Django''' (última versión por defecto), instalará también algunas dependencias: |
Línea 63: | Línea 63: |
* Nos quedará la siguiente lista de módulos instalados: | Nos quedará la siguiente lista de módulos instalados: |
Línea 78: | Línea 79: |
* 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: | 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: |
Línea 124: | Línea 126: |
Línea 128: | Línea 129: |
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
Tabla de Contenidos
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...
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