Tamaño: 481
Comentario:
|
Tamaño: 5664
Comentario:
|
Los textos eliminados se marcan así. | Los textos añadidos se marcan así. |
Línea 6: | Línea 6: |
=== Preparando el entorno virtual === * Instalar módulo para crear entornos virtuales en Python (3): |
=== Preparando el entorno de trabajo === Instalar módulo para crear entornos virtuales en Python (3): |
Línea 13: | Línea 12: |
* Creamos una carpeta para crear nuestros proyectos Django. |
Creamos una carpeta para crear nuestros proyectos Django. |
Línea 20: | 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 26: | Línea 23: |
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
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