Header Ads Widget

Ticker

6/recent/ticker-posts

Django para principiantes

 


Django es un marco web popular creado con Python que permite a los desarrolladores crear rápidamente aplicaciones web fáciles de mantener. En este tutorial, echaremos un vistazo a Django instalándolo y configurando un proyecto simple. A continuación, veremos cómo se usan los modelos , patrones de URL , vistas y plantillas en Django para crear un poderoso código modular para una aplicación web. Django es un gran proyecto de software con cientos de características, pero intentaremos hacerlo lo más comprensible posible. Comencemos con Django.


¿Qué es Django?

Al mirar el sitio web oficial djangoproject.com , aprendemos que Django es un marco web de Python que le permite desarrollar rápidamente proyectos web en un diseño limpio y pragmático. Un marco web es una colección de herramientas que se utilizan para crear sitios web y aplicaciones web. Django viene con herramientas como un mapeador relacional de objetos u ORM , que nos ayuda a realizar consultas en la base de datos. También ofrece enrutamiento de URL que determina qué lógica seguir dependiendo de la URL de una solicitud web. Plantillas HTMLes otra característica de Django que facilita ver los datos como HTML en un navegador web. Django en sí no es un lenguaje de programación. Python es el lenguaje de programación con el que se creó Django. Django tampoco es un servidor web, pero tiene un servidor web incorporado para el desarrollo local.


Instalación de Django

Es posible que desee configurar un entorno virtual de Python para comenzar, pero no es obligatorio. Para instalar Django, primero necesita la última versión de Python instalada en su máquina. Es bastante fácil de hacer, simplemente siguiendo las instrucciones en el sitio web principal de Python. Esto también instalará PIP, el administrador de paquetes de Python. Una vez que esté listo, todo lo que necesita hacer es abrir una ventana de terminal y escribir el siguiente comando.

pip instalar django

Esto instala la última versión de Django en su computadora. Puede verificar el estado de Django así en un símbolo del sistema de Python.

>>> importar django
>>> django.get_version ()
'3.0'
>>>

¡Eso debería ser todo lo que necesita hacer para comenzar!


Creando un proyecto de Django

Django proporciona un comando simple para crear un nuevo proyecto para usted. Antes de ejecutar ese comando, desea navegar a un directorio donde almacenará su proyecto. Para nosotros, eso estará en C:pythonA partir de aquí, crearé el conjunto inicial de archivos para nuestro proyecto Django usando un comando que viene con Django y que se llama Django admin. Para crear un proyecto, podemos escribir django-admin.py startproject y luego el nombre de nuestro proyecto. Podemos simplemente llamarlo djangotutorial . Podemos escribir el siguiente comando y luego presionar enter.

python $ django-admin.py startproject djangotutorial

Verá que ahora hay una nueva carpeta de djangotutorial en la carpeta actual. En otras palabras, ahora tenemos un proyecto de Django iniciado en C:pythondjangotutorialAhora, abriré esa carpeta usando PyCharm, un fantástico IDE de Python. Aquí podemos ver el esquema de los archivos creados para un nuevo proyecto de Django.

nuevo proyecto fresco de django

Dentro de la carpeta djangotutorial, hay un archivo llamado manage.py . También hay una carpeta interna de djangotutorial que contiene cuatro archivos. Estos son _init_.py , settings.py , urls.py y wsgi.py . Echemos un vistazo a lo que hace cada uno de estos archivos.

    manage.py El archivo manage.py se utiliza para ejecutar varios comandos para nuestro proyecto.
    _init_.py El archivo _init_.py le dice a Python que esta carpeta contiene archivos de Python. También conocido como dunder init.
    settings.py El archivo settings.py configura conceptos de Django como aplicaciones, middleware, plantillas, etc.
    urls.py El archivo urls.py es el archivo de enrutamiento y enruta las solicitudes http según la URL.
    wsgi.py El archivo wsgi.py , o wuzgi, proporciona un enlace para servidores web, como Apache o Nginx.

Con estos archivos generados, estamos listos para ejecutar nuestro proyecto por primera vez. Podemos comenzar navegando a la carpeta interna de djangotutorial en nuestra terminal. Desde aquí podemos escribir ls y deberíamos ver el archivo manage.py. Para ejecutar el servidor, podemos escribir el comando python manage.py runserver y veremos algunos resultados como a continuación.

djangotutorial $ python manage.py runserver
Observación de cambios de archivos con StatReloader
Realización de comprobaciones del sistema ...

La verificación del sistema no identificó problemas (0 silenciados).

Tiene 17 migración (es) sin aplicar. Es posible que su proyecto no funcione correctamente hasta que aplique las migraciones para las aplicaciones: administrador, autenticación, tipos de contenido, sesiones.
Ejecute 'python manage.py migrate' para aplicarlos.
31 de enero de 2020-14: 45: 51
Django versión 3.0, usando la configuración 'djangotutorial.settings'
Iniciando el servidor de desarrollo en http://127.0.0.1:8000/
Salga del servidor con CTRL-BREAK.

El servidor Django ahora se está ejecutando. Podemos visitar http://127.0.0.1:8000/ en el navegador y deberíamos ver una bonita pantalla de bienvenida de Django.

Pantalla de bienvenida de Django

¡Funcionó! Ahora podemos ver la pantalla predeterminada que crea Django cuando creamos un nuevo proyecto de Django. A partir de aquí, se ha generado nuestro proyecto básico y estamos listos para personalizar y agregar funciones. También puede notar que ahora tenemos un archivo db.sqllite en el proyecto, que no estaba allí antes. Esto se debe a que cuando ejecuta el comando runserver por primera vez, Django crea este archivo para que tenga una base de datos con la que trabajar.


Aplicaciones de Django

Una aplicación Django es un componente dentro de un proyecto Django. Es una carpeta con un conjunto de archivos Python dentro. Un proyecto de Django generalmente se compone de varias aplicaciones diferentes, cada una con un propósito diferente. Puede haber una aplicación de foro, una aplicación wiki o una aplicación de blog. Cada uno tendría su propia carpeta dentro del proyecto Django. Los documentos oficiales hacen referencia a la creación de una aplicación Polling, y podríamos intentarlo en un tutorial posterior. Por ahora, crearemos una aplicación para perros. Lo llamaremos DjangoDogs. Para construir nuestra aplicación, iremos a la Terminal y navegaremos dentro de nuestro proyecto hasta la carpeta donde se encuentra manage.py. Ahora queremos crear la aplicación. Podemos hacer esto escribiendo el siguiente comando en la terminal.

djangotutorial $ python manage.py startapp djangodogs

resultado del comando django startapp

Ahora podemos ver que se agregaron varios archivos, incluida una carpeta de migraciones. Para terminar de agregar nuestra aplicación Django al proyecto, tenemos un paso más. Tendremos que navegar dentro de la carpeta djangotutorial y luego ir al archivo settings.py . Dentro del archivo de configuración, nos desplazaremos hacia abajo hasta encontrar la configuración de las aplicaciones instaladas. Al final de esta lista, agregaremos la cadena djangodogs. Las otras aplicaciones que están en esta lista son aplicaciones predeterminadas que vienen con Django. Necesitamos editar esta configuración cada vez que instalamos o creamos una nueva aplicación Django. Aquí está el archivo setting.py, con nuestra nueva entrada resaltada.

Los archivos de una aplicación Django

ExpedientePropósito
apps.pyConfiguración e inicialización
modelos.pyCapa de datos
admin.pyInterfaz de administración
urls.pyEnrutamiento de URL
views.pyCapa de control
tests.pyPrueba la aplicación
migrations.pyContiene los archivos de migración

El archivo apps.py controla la configuración específica de esta aplicación. El archivo models.py ofrece modelos en Django y se utiliza para construir consultas y esquemas de base de datos. El archivo admin.py define una interfaz de administración de Django para la aplicación donde puede ver y editar los datos relacionados con esta aplicación. El archivo urls.py se puede utilizar para el enrutamiento de URL específico de esta aplicación. El archivo views.py define la lógica y el flujo de control para manejar solicitudes y define las respuestas HTTP que se devuelven. El archivo test.py se utiliza para escribir pruebas unitarias para esta aplicación. Finalmente, la carpeta de migraciones contiene archivos que Django usa para migrar la base de datos a medida que creamos y cambiamos el esquema de la base de datos con el tiempo. Esto nos brinda una excelente descripción general de lo que es una aplicación con respecto a un proyecto de Django.


Plantillas de modelos de vistas de enrutamiento de Django

Plantillas de modelos de vistas de enrutamiento de django

Es importante comprender la arquitectura subyacente cuando se trabaja con un marco web. Django es un marco MVC, o arquitectura de controlador de vista de modelo, sin embargo, Django usa algunos nombres diferentes para estos. Los cuatro conceptos que se deben comprender en Django son Patrones de URL , Vistas , Modelos y Plantillas . Cada uno de ellos tiene un trabajo específico.

Patrones de URL : cuando una aplicación Django recibe una solicitud web, utiliza los patrones de URL para decidir a qué vista pasar la solicitud para su manejo. En este proyecto, los patrones de URL se definen en / urls.py djangotutorial .

Vistas : una vista en Django toma una solicitud HTTP como argumento y devuelve una respuesta HTTP. Nuestras vistas se definen en djangodogs / views.py . Las vistas proporcionan la parte lógica o de flujo de control del proyecto.

Modelos : cuando desee realizar consultas en la base de datos, cada vista puede aprovechar los modelos de Django según sea necesario. Los modelos de la aplicación djangodogs se encuentran en djangodogs / models.py . Un modelo de Django es una clase con atributos que definen el esquema de una tabla de base de datos. Estas clases ofrecen métodos integrados para realizar consultas en las tablas asociadas.

Plantillas : cada vista que se define también puede aprovechar las plantillas de Django que proporcionan la capa de presentación de cómo se verá la respuesta HTML. Cada plantilla es un archivo que consta de HTML junto con una sintaxis de plantilla adicional para variables, bucles y otros flujos de control. Los archivos de plantilla se pueden colocar en una carpeta denominada plantillas para mantener la coherencia.


Configure su página de inicio de Django

Para este proyecto, queremos finalmente renderizar una página web usando Django. Vamos a hacer eso ahora mismo. Lo primero que debemos hacer es agregar un directorio de plantillas en nuestra aplicación djangodogs. Aquí vamos.

crear un nuevo directorio en Pycharm para el proyecto Django

En la carpeta de plantillas, ahora necesitamos agregar un archivo Html que nuestra aplicación pueda representar.

html de inicio para la aplicación django

Perfecto. Ahora, solo queremos agregar el mínimo de marcado HTML para que podamos renderizar una página.
djangotutorial / djangodogs / templates / home.html

Para cargar una plantilla, necesitamos una vista para completar esta tarea por nosotros. Si esto le suena gracioso, puede pensar en las vistas en Django como controladores si está pensando en esto en un enfoque MVC más tradicional. En Django, una vista es en realidad un controlador. Así es como podemos configurar nuestro views.py.
djangotutorial / djangodogs / views.py

En este código, simplemente definimos una función llamada home (). Acepta una solicitud HTTP y la usa para representar el archivo home.html que acabamos de crear en el paso anterior. Puede ver que la función render () aquí toma dos argumentos. La primera es la solicitud y la segunda es la plantilla que se mostrará.

Podemos configurar nuestro urls.py así.
djangotutorial / urls.py

El propósito de la expresión regular aquí es hacer coincidir la URL raíz, que es una barra (/). El signo del dólar de la zanahoria nos sirve aquí, y es el primer argumento de la función url (). Ahora, cuando la solicitud web ingresa a la aplicación, queremos activar la función home () en el archivo views.py. El segundo parámetro de url () logra este objetivo. Por último, le damos el nombre de inicio a este patrón, que es como una ruta con nombre. Ahora, cuando visitamos la página de inicio de nuestro proyecto Django, ¡tenemos éxito!

hola página de inicio de django

Entonces podemos ver que renderizar una página web en Django es tan fácil como uno, dos, tres.

página de renderizado de django

desde la ruta de importación django.urls

Las expresiones regulares pueden ser un poco abrumadoras. Como tal, Django también ofrece la capacidad de definir rutas usando una sintaxis mucho más simple con la función path () . Aquí actualizamos nuestro archivo urls.py para reflejar ese cambio, y todo sigue funcionando perfectamente.

djangotutorialdjangotutorialurls.py

Pasar una identificación a través de una ruta

La combinación de URL de inicio, vista y plantilla anteriores probablemente se usaría para mostrar una lista de perros. Es como la página de inicio del recurso perros. Ahora, ¿qué sucede cuando desea profundizar en un elemento de la colección y ver detalles sobre ese elemento? En este caso, si queremos ver los detalles específicos sobre un perro, queremos pasar una identificación a través del patrón de URL. Imagina que tenemos 10 perros diferentes en la base de datos y cada uno tiene una identificación única. Podemos pasar esa identificación y obtener esos detalles. Así es como podemos configurar eso.

djangotutorialdjangotutorialurls.py

Lo recortado arriba dice lo que podemos visitar en una URL como https://mysite.com/dogs/7, y eso enviaría el ID de 7 junto con la solicitud. En nuestro archivo views.py, podemos probar esto devolviendo una HttpResponse junto con la identificación dada.

ruta de Python con id pass para ver

Esto muestra cómo funciona pasar una ID a través de la URL en Django. Ahora, una vez que tenemos una base de datos implementada, podemos usar ese ID para consultar la base de datos y obtener detalles sobre un perro determinado.

Pasar datos a una plantilla desde la vista

En lugar de devolver una HttpResponse directamente desde la vista, ahora rendericemos un archivo de plantilla y pasemos los datos de la función en la vista a la plantilla. También mostraremos el ID en esa plantilla mediante interpolación.

djangotutorialdjangodogsviews.py

djangotutorialdjangodogstemplatesdog_detail.html

ID de URL para ver la plantilla


Presentación de modelos de Django

Los modelos se refieren a la capa de datos de una aplicación Django. El concepto es familiar si ha trabajado con cualquier tipo de proyecto MVC en varios lenguajes de programación o frameworks. El Modelo es lo que define la estructura de nuestros datos y cómo se almacenarán en la base de datos. Django tiene un mapeador relacional de objetos integrado, o ORM, que puede usar para colocar datos fácilmente y sacarlos de la base de datos. Una aplicación Django determinada tiene un archivo models.py, y aquí es donde se definen los modelos para nuestra aplicación. Puede tener uno o varios en el mismo archivo. En Django, un modelo es una clase que hereda de Django.db.models.Model. Los modelos usan atributos de clase para definir sus campos. Solo queremos agregar algunos campos para que podamos rastrear el nombre, la raza y la descripción de cada perro en nuestra aplicación Django.

djangotutorialdjangodogsmodels.py

Migraciones de Django

Los modelos de Django definen la estructura esperada de nuestra base de datos. Las migraciones son responsables de crear los scripts necesarios para cambiar esta estructura a lo largo del tiempo a medida que evoluciona un proyecto. En Django, cuando agrega un modelo al archivo models.py, la tabla de la base de datos relacionada aún no existe. Cuando se crea un nuevo modelo, una migración inicial crea la tabla de la base de datos. Las migraciones también son necesarias cuando se agrega o elimina un campo de un modelo existente, o cuando los atributos de un campo han cambiado. Todos estos cambios en un archivo models.py necesitan un cambio correspondiente en la base de datos y, para ello, es necesario crear y ejecutar una migración. Lo bueno de Django es que no tienes que crear manualmente la migración, la genera Django para ti. La forma en que esto funciona es que debe definir el modelo usted mismo, luego usar elmakemigrationscomando para generar archivos de migraciones. Este comando lee el archivo de modelos actual e inspecciona el estado actual de la base de datos para determinar qué cambios deben realizarse para que la estructura de la base de datos coincida con el archivo models.py. Las migraciones son necesarias en todos los casos siguientes.
Migraciones de Django necesarias para

Con nuestro modelo definido anteriormente, ahora podemos realizar nuestra migración inicial usando el comando python manage.py makemigrations . Deberíamos ver un resultado similar al siguiente.

djangotutorial $ python manage.py makemigrations
Migraciones para 'djangodogs':
  djangodogsmigrations001_initial.py
    - Crear modelo de perro

Ahora hay un archivo llamado 0001_initial.py en la aplicación, y el código generado automáticamente por Django se ve así.
djangotutorialdjangodogsmigrations001_initial.py

Django ya tiene muchas migraciones integradas y podemos ver las migraciones usando el comando python manage.py showmigrations . Esto construye las tablas para cosas como el sistema de autenticación, entre otros. La información clave a tener en cuenta del resultado a continuación es que ahora tenemos la migración 0001_initial que es una migración definida personalizada en la aplicación djangodogs.

djangotutorial $ python manage.py showmigrations
administración
 [] 0001_inicial
 [] 0002_logentry_remove_auto_add
 [] 0003_logentry_add_action_flag_choices
auth
 [] 0001_inicial
 [] 0002_alter_permission_name_max_length
 [] 0003_alter_user_email_max_length
 [] 0004_alter_user_username_opts
 [] 0005_alter_user_last_login_null
 [] 0006_require_contenttypes_0002
 [] 0007_alter_validators_add_error_messages
 [] 0008_alter_user_username_max_length
 [] 0009_alter_user_last_name_max_length
 [] 0010_alter_group_name_max_length
 [] 0011_update_proxy_permissions
tipos de contenido
 [] 0001_inicial
 [] 0002_remove_content_type_name
djangodogs
 [] 0001_inicial
sesiones
 [] 0001_inicial

Ahora todo está listo para que podamos ejecutar las migraciones. Podemos hacer esto usando el comando python manage.py migrate así.

djangotutorial $ python manage.py migrar
Operaciones a realizar:
  Aplicar todas las migraciones: admin, auth, contenttypes, djangodogs, sesiones
Ejecutando migraciones:
  Aplicando contenttypes.0001_initial ... OK
  Aplicando auth.0001_initial ... OK
  Aplicando admin.0001_initial ... OK
  Aplicando admin.0002_logentry_remove_auto_add ... OK
  Aplicando admin.0003_logentry_add_action_flag_choices ... OK
  Aplicando contenttypes.0002_remove_content_type_name ... OK
  Aplicando auth.0002_alter_permission_name_max_length ... OK
  Aplicando auth.0003_alter_user_email_max_length ... OK
  Aplicando auth.0004_alter_user_username_opts ... OK
  Aplicando auth.0005_alter_user_last_login_null ... OK
  Aplicando auth.0006_require_contenttypes_0002 ... OK
  Aplicando auth.0007_alter_validators_add_error_messages ... OK
  Aplicando auth.0008_alter_user_username_max_length ... OK
  Aplicando auth.0009_alter_user_last_name_max_length ... OK
  Aplicando auth.0010_alter_group_name_max_length ... OK
  Aplicando auth.0011_update_proxy_permissions ... OK
  Aplicando djangodogs.0001_initial ... OK
  Aplicando sesiones.0001_initial ... OK

Cuando ejecutamos por primera vez el comando showmigrations , vimos un [] al comienzo de cada migración. Esto significa que la migración existe, pero aún no se ha ejecutado. Si hay una [x] a la izquierda de cada migración, significa que la migración se ha ejecutado. Podemos usar el comando python manage.py showmigrations una vez más para mostrar las migraciones y verificar que se hayan ejecutado correctamente.

djangotutorial $ python manage.py showmigrations
administración
 [X] 0001_inicial
 [X] 0002_logentry_remove_auto_add
 [X] 0003_logentry_add_action_flag_choices
auth
 [X] 0001_inicial
 [X] 0002_alter_permission_name_max_length
 [X] 0003_alter_user_email_max_length
 [X] 0004_alter_user_username_opts
 [X] 0005_alter_user_last_login_null
 [X] 0006_require_contenttypes_0002
 [X] 0007_alter_validators_add_error_messages
 [X] 0008_alter_user_username_max_length
 [X] 0009_alter_user_last_name_max_length
 [X] 0010_alter_group_name_max_length
 [X] 0011_update_proxy_permissions
tipos de contenido
 [X] 0001_inicial
 [X] 0002_remove_content_type_name
djangodogs
 [X] 0001_inicial
sesiones
 [X] 0001_inicial

shell de python manage.py

Podemos probar nuestro nuevo modelo ahora. Necesitamos usar el shell a través del comando de shell python manage.py . Podemos agregar nuestro primer perro al sistema así.

Insertar registro en la base de datos

djangotutorial $ python manage.py shell
Python 3.8.0 (etiquetas / v3.8.0: fa919fd, 14 de octubre de 2019, 19:21:23) [MSC v.1916 de 32 bits (Intel)] en win32
Escriba "ayuda", "derechos de autor", "créditos" o "licencia" para obtener más información.
(Consola interactiva)
>>> de djangodogs.models import Dog
>>> perro = Perro (nombre = 'Winnie', raza = 'Havanese', description = '¡Hembra amante de la diversión!')
>>> dog.save ()

Recuperar registro de la base de datos

No obtuvimos ningún error al insertar nuestro primer registro en la base de datos usando el ORM de Django. Para consultar la base de datos usando el ORM para que podamos ver ese registro, podemos usar estos comandos.

>>> perros = Perro.objetos.todos ()
>>> perro = perros [0]
>>> perro.nombre
'Winnie'
>>> perro.raza
'Bullmastiff'
>>> dog.description
'¡Mujer amante de la diversión!'

Una vez que agregamos otro registro a la base de datos, el comando .all () devuelve más de un resultado.

>>> Perro.objetos.todos ()
<QuerySet [<Perro: objeto Perro (1)>, <Perro: objeto Perro (2)>]>

URL -> Ver -> Modelo -> Plantilla

Podemos ponerlo todo junto ahora. Cuando visitamos la página de inicio, queremos mostrar todos los perros. Deberíamos poder hacer clic en el nombre del perro y Django cargará la plantilla de detalles para mostrar los detalles de cada perro en particular. Esta es la función home () actualizada en el archivo views.py para enumerar todos los perros.

djangotutorialdjangodogsviews.py

La plantilla home.html también debe actualizarse ahora para permitirnos recorrer cualquier número de perros en el sistema. Django proporciona etiquetas especiales en el lenguaje de plantillas para permitir esto.
djangotutorialdjangodogstemplateshome.html

Visitar la página de inicio muestra que ahora vemos la pequeña lista de perros en el sistema. También observe que se puede hacer clic en cada perro, con la identificación correcta utilizada en el href.

página de inicio de django que enumera todos los recursos

Para garantizar que la capacidad de hacer clic en cada perro funcione, debemos actualizar la función dog_detail () en el archivo views.py. Aquí está el código actualizado que ahora usa la ID proporcionada para buscar un Perro dado de la base de datos usando el Modelo que creamos.

djangotutorialdjangodogsviews.py

El último paso ahora es simplemente actualizar el archivo de plantilla dog_detail.html para mostrar los detalles de un perro en particular.

djangotutorialdjangodogstemplatesdog_detail.html

Nuestra miniaplicación terminada funciona bien 🙂

Resumen de Django para principiantes

Si completó este tutorial de Django para principiantes, ¡felicitaciones! Ahora está en camino de poner el poder de Python y Django a trabajar para usted de formas nuevas y emocionantes. Al elegir un marco web para trabajar, Django es la opción líder para los desarrolladores web de Python. En este tutorial, cubrimos mucho terreno que incluye:

  • Qué es Django
  • Instalando Django
  • Creando un proyecto de Django
  • Cómo crear aplicaciones Django
  • Los archivos de una aplicación Django
  • Enrutamiento, vistas, modelos y plantillas de Django
  • Configuración de la página de inicio de Django
  • Enrutamiento de URL
  • Pasar una identificación a través de una ruta
  • Pasar datos a una plantilla desde una vista
  • Modelos de Django
  • Migraciones de Django
  • Insertar registros en la base de datos
  • Recuperar registros de la base de datos
  • Recursos adicionales para Django


Publicar un comentario

0 Comentarios