Marco de Django

En este capítulo, discutiremos sobre Django Framework en detalle.

Django es un marco web MVT que se utiliza para crear aplicaciones web. El enorme marco web de Django viene con tantas "baterías incluidas" que los desarrolladores a menudo se sorprenden de cómo todo funciona en conjunto. El principio detrás de agregar tantas baterías es tener funcionalidades web comunes en el marco mismo en lugar de agregar este último como una biblioteca separada.

Una de las principales razones detrás de la popularidad del framework Django es la enorme comunidad de Django. La comunidad es tan grande que se le dedicó un sitio web separado donde los desarrolladores de todos los rincones desarrollaron paquetes de terceros que incluyen autenticación, autorización, sistemas CMS completos con tecnología Django, complementos de comercio electrónico, etc. Existe una alta probabilidad de que lo que está tratando de desarrollar ya lo haya desarrollado alguien y solo necesita incorporarlo a su proyecto.

¿Por qué debería usar Django?

Django está diseñado de tal manera que anima a los desarrolladores a desarrollar sitios web de forma rápida, limpia y con un diseño práctico. El enfoque práctico de Django para hacer las cosas es donde se destaca entre la multitud.

Si planea crear una aplicación altamente personalizable, como un sitio web de redes sociales, Django es uno de los mejores marcos a considerar. La fuerza de Django radica en su interacción entre usuarios o su capacidad para compartir diferentes tipos de medios. Una de las grandes ventajas de django es su capacidad para utilizar un gran soporte basado en la comunidad que le brinda complementos de terceros altamente personalizables y listos para usar en sus aplicaciones.

A continuación se muestran las diez razones principales para elegir Django para el desarrollo web:

Pitón

Python es posiblemente uno de los lenguajes de programación más fáciles de aprender debido a sus construcciones de lenguaje simples, estructura de flujo y sintaxis fácil. Es versátil y ejecuta sitios web, aplicaciones de escritorio y aplicaciones móviles integradas en muchos dispositivos y se utiliza en otras aplicaciones como un lenguaje de programación popular.

Baterias incluidas

Django viene con bibliotecas comunes que son esenciales para construir funcionalidades comunes como enrutamiento de URL, autenticación, un mapeador relacional de objetos (ORM), un sistema de plantillas y migraciones de esquemas db.

Administrador integrado

Django tiene una interfaz de administración incorporada que le permite manejar sus modelos, permisos de usuario / grupo y administrar usuarios. Con la interfaz del modelo en su lugar, no hay necesidad de un programa de administración de base de datos separado para todas las funciones, excepto las avanzadas.

No se interpone en tu camino

La creación de una aplicación Django no agrega texto estándar ni funciones innecesarias. No hay importaciones obligatorias, bibliotecas de terceros ni archivos de configuración XML.

Escalable

Django se basa en el patrón de diseño MVC. Significa que todas las entidades como db (base de datos), back-end y front-end son entidades individuales. Django nos permite separar el código de los medios estáticos, incluidas imágenes, archivos, CSS y JavaScript que componen su sitio.

Django admite una lista completa de bibliotecas de terceros para servidores web, almacenamiento en caché, gestión del rendimiento, agrupación en clústeres y equilibrio. Una de las ventajas que ofrece Django es el soporte para las principales aplicaciones y servicios de correo electrónico y mensajería como ReST y OAuth.

Batalla probado

Django se abrió por primera vez en 2005. Después de 12 años de crecimiento, Django ahora no solo administra sitios web de publicación de noticias, sino que también administra la totalidad o parte de importantes empresas globales como Pinterest, Instagram, Disqus, Bitbucket, EventBrite y Zapier. Esto lo convierte en un marco web robusto y confiable para trabajar.

Soporte de paquete enorme

Debido al gran apoyo de la comunidad y la enorme red de desarrolladores, existe una alta posibilidad de que cualquier cosa que pretenda hacer se haya hecho antes. La gran comunidad internacional de desarrolladores contribuye a la comunidad lanzando sus proyectos como paquetes de código abierto.

Uno de esos repositorios de estos proyectos es el sitio de paquetes de Django. Actualmente, los paquetes de Django enumeran más de 3400 aplicaciones, sitios y herramientas de Django reutilizables para usar en nuestros proyectos de Django.

Desarrollado activamente

Uno de los mayores riesgos asociados con los proyectos de código abierto es su sostenibilidad. No podemos estar seguros de si durará mucho.

No existe tal riesgo con Django ya que tiene 12 años. Sus lanzamientos consistentes, versiones más nuevas / mejores y comunidad activa están creciendo todos los días con un gran equipo central de contribuyentes voluntarios que mantienen y mejoran la base del código todos los días.

Lanzamientos estables

Los proyectos de software de código abierto como Django, en muchos casos, se desarrollan activamente y son más seguros que el software propietario de la competencia, ya que muchos desarrolladores lo desarrollan y prueban todos los días. Sin embargo, el inconveniente de un proyecto de software de código abierto es la ausencia de una base de código estable para un desarrollo comercialmente viable.

En Django, tenemos versiones de soporte a largo plazo (LTS) del software y un proceso de lanzamiento definido como se muestra en la siguiente imagen:

Documentación de primera clase

Desde la primera versión, los desarrolladores de Django se aseguraron de que hubiera documentos completos adecuados disponibles y que los tutoriales fueran fáciles de entender.

¿Quién usa Django?

Debido a la fuerza única de Django, existen varios sitios web populares que se crean con Python sobre el marco de Django. A continuación se muestran algunos de los principales sitios que se han construido total o parcialmente en base a Django.

Disqus

Es uno de los sitios de alojamiento de comentarios de blogs más preferidos a nivel mundial. Es fácil de integrar con los CMS (sistemas de gestión de contenido) más populares como WordPress y muchos otros a través de Disqus. Con una base de usuarios de más de 50 millones, Django puede satisfacer a los propietarios del sitio para llegar a sus comunidades.

La cebolla

El sitio web de Onion, que proporciona un lugar en línea para su periódico satírico, Django proporciona el marco para ello.

Bitbucket

Bitbucket es como GitHub, un servicio de alojamiento de repositorios de control de versiones. La única diferencia entre Bitbucket y GitHub es que Bitbucket aloja repositorios mercuriales, mientras que GitHub aloja repositorios git. Como millones de usuarios están asociados con Bitbucket, y todos los servicios que proporciona Bitbucket (como crear un repositorio, enviar su código, agregar colaboradores, confirmaciones, solicitudes de extracción, etc.) deben ser estables. Django es responsable de ejecutar el sitio bitbucket.

Instagram

Instagram es una aplicación de redes sociales creada especialmente para aquellos que aman compartir fotos y videos con todos sus amigos. Actualmente hay muchas celebridades en Instagram para estar más cerca de sus fans. El framework Django también ejecuta Instagram.

Mozilla Firefox

El segundo navegador más utilizado en el mundo después de Google Chrome es el navegador Mozilla. Ahora la página de ayuda de Mozilla está construida con el marco de Django.

Pinterest

Millones de usuarios de todo el mundo descubren sus nuevas ideas e inspiración en Pinterest. Pinterest está usando el marco de Django (modificación hecha según su requisito) para ejecutarlo.

NASA

El sitio web oficial de la Administración Nacional de Aeronáutica y del Espacio es un lugar para que millones de usuarios visiten y vean las noticias, imágenes, videos y podcasts proporcionados por la agencia de estreno. Django desarrolla algunas partes específicas del sitio web oficial de la NASA.

El Washington Post

Si hay un periódico influyente en el mundo, sin duda es el Washington Post. El sitio web del Washington Post es una fuente de noticias en línea muy popular que acompaña a su diario. Su enorme cantidad de visitas y tráfico ha sido manejado fácilmente por el marco web Django.

Regalos de Reddit

El enormemente popular sitio web de Reddit ha lanzado una plataforma de intercambio de regalos y reuniones en línea y anónima llamada Reddit Gifts. El sitio conecta a usuarios de todo el mundo y facilita el intercambio de regalos entre ellos. El marco web de Django potencia sus funcionalidades.

Prezi

Prezi es una alternativa basada en la nube a Microsoft PowerPoint construida en el marco de Django. El sitio proporciona un lienzo virtual que se puede manipular y acercar y alejar. Esto proporciona la vista completa de la presentación en lugar de diapositivas individuales.

Instalación y creación de un proyecto y una aplicación de Django

Antes de instalar Django, debemos asegurarnos de que Python esté instalado. Suponiendo que está usando virtualenv, una simple instalación de pip django debería ser suficiente.

Instalación de entorno virtual y Django

A continuación se muestra el proceso para instalar el entorno virtual y Django en su entorno de Windows:

Para verificar si Django está instalado correctamente, escriba el código que se proporciona a continuación:

Creando Proyecto Django

Una vez que se completa la instalación, necesitamos crear un proyecto Django.

Ejecutar el siguiente comando en su máquina con Windows creará el siguiente proyecto de django:

django-admin startproject my_project_name

Escribir dir mostrará un nuevo archivo y un nuevo directorio como se muestra arriba.

manage.py- manage.py es un archivo Python ejecutable desde la línea de comandos que es solo un envoltorio de django-admin. Nos ayuda a gestionar nuestro proyecto, que también está implícito en su nombre.

Con esto, creó un directorio llamado, myFirstDjangoProjectdentro de myFirstDjangoProject, que representa la raíz de configuración de nuestro proyecto. Exploremos mucho más profundamente.

Configurando Django

Al llamar al directorio myFirstDjangoProject "raíz de configuración", queremos decir que este directorio contiene los archivos necesarios para la configuración general de nuestro proyecto Django. Prácticamente todo lo que está fuera de este directorio se centrará únicamente en la "lógica empresarial" asociada con los modelos, vistas, rutas, etc. del proyecto. Todos los puntos que conectan el proyecto entre sí conducirán aquí.

  • __init__.py: está vacío y cambia el directorio a un paquete de Python importable.

  • settings.py: como sugiere el nombre, es el lugar donde se establecerán la mayoría de los elementos de configuración.

  • urls.py: las URL se establecen con urls.py. Con esto, no tenemos que escribir explícitamente todas las URL del proyecto en este archivo. Sin embargo, tenemos que decirle a Django dónde se han declarado las URL (es decir, necesitamos vincular otra URL en urls.py).

  • Wsgi.py - Esto es para ayudar a la aplicación en producción y es similar a otras aplicaciones como Flask, Tornado, Pyramid que expone algún objeto de "aplicación".

Establecer la configuración

Echando un vistazo dentro de settings.py revelará su tamaño considerable, y estos son solo los valores predeterminados. Otras cosas que debemos cuidar son los archivos estáticos, la base de datos, los archivos multimedia, la integración en la nube u otras docenas de formas en las que se puede configurar un proyecto de Django. Entendamos algunos puntos mencionados en el archivo settings.py:

  • BASE_DIR- Esto es útil para localizar archivos. Dentro del archivo setting.py, el parámetro BASE_DIR establece la ruta absoluta al directorio base.

  • SECRET_KEY- Se utiliza para hacer hashes. En general, usamos secret_key para cookies, sesiones, protección csrf y tokens de autenticación.

  • DEBUG - Podemos configurarlo para que el proyecto se ejecute en modo de desarrollo o de producción.

  • ALLOWED_HOSTS- Proporcionamos la lista de nombres de host a través de los cuales se atiende nuestra aplicación. En el modo de desarrollo, es opcional configurar; sin embargo, en la máquina de producción, necesitamos configurar nuestro proyecto Django.

  • INSTALLED_APPS- Es la lista de "aplicaciones" de Django que están instaladas y ejecutándose actualmente en nuestro proyecto Django. Django incorporado proporciona seis aplicaciones instaladas de la siguiente manera:

    • 'django.contrib.admin'

    • 'django.contrib.auth'

    • django.contrib.

    • django.contrib.sessions

    • django.contrib.messages

    • django.contrib.staticfiles

  • MIDDLEWARE- Ayuda a que se ejecute nuestro proyecto Django. Es una clase de Python que se conecta al procesamiento de solicitudes / respuestas de django.

  • TEMPLATES- Define cómo se debe mostrar el documento en la interfaz. Las plantillas de Django se utilizan para producir cualquier formato basado en texto.

  • WSGI_APPLICATION- Cualquier servidor que configuremos debe saber dónde está el archivo WSGI. En caso de que esté utilizando un servidor externo, se verá en su propia configuración. De forma predeterminada, apunta a objetos en wsgi.py.

  • DATABASES- Establece las bases de datos a las que nuestro proyecto Django está accediendo actualmente. Es obligatorio configurar la base de datos predeterminada. En caso de que establezcamos la base de datos de nuestra elección, debemos mencionar algunas cosas relacionadas con la base de datos como: HOST, USER, PASSWORD, PORT, database NAME y ENGINE apropiado.

  • STATIC_URL- Es la URL a utilizar cuando se hace referencia a archivos estáticos ubicados en STATIC_ROOT. De forma predeterminada, es Ninguno.

Sin embargo, es posible que necesitemos agregar una ruta para archivos estáticos. Vaya hasta el final del archivo y, justo debajo de la entrada STATIC_URL, agregue uno nuevo llamado STATIC_ROOT como se muestra a continuación:

myFirstDjangoProject/settings.py

STATIC_URL = '/ static /'

STATIC_ROOT = os.path.join (BASE_DIR, 'estático')

Configurar una base de datos

Hay una gran cantidad de software de base de datos diferente que puede almacenar la fecha de su sitio. Usaremos el predeterminado, sqlite3.

Esto ya está configurado en la siguiente parte de su myFirstDjangoProject/settings.py -

DATABASES = {
   'default': {
      'ENGINE': 'django.db.backends.sqlite3',
      'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
   }
}

Para crear una base de datos para nuestro blog, ejecutemos lo siguiente en la consola: python manage.py migrate (Necesitamos estar en el directorio myFirstDjangoProject que contiene el archivo manage.py.

Obtendrá el siguiente resultado si todo va bien:

Iniciar el servidor web

Debe estar en el directorio que contiene el archivo manage.py. En la consola, podemos iniciar el servidor web ejecutando python manage.py runserver de la siguiente manera:

Ahora todo lo que necesita hacer es verificar que su sitio web esté funcionando. Abra su navegador (Firefox, Chrome, Safari, Internet Explorer o lo que sea que use) e ingrese esta dirección -

http://127.0.0.1:8000/

o

http://localhost:8000/ # Ya que nuestro servidor web se ejecuta solo en nuestra máquina local.

¡Felicidades! ¡Acaba de crear su primer sitio web y ejecutarlo utilizando un servidor web!

Mientras se ejecuta el servidor web, no verá una nueva línea de comandos para ingresar comandos adicionales. La terminal aceptará el siguiente texto pero no ejecutará nuevos comandos. Esto se debe a que el servidor web se ejecuta continuamente para escuchar las solicitudes entrantes.

Modelos de Django

Estamos tratando de crear un modelo Django que almacenará todas las publicaciones en nuestro blog. Pero para asegurarnos de que funcione, necesitamos aprender sobre los objetos.

Objetos

Objetos es una colección de propiedades y acciones. Entendamos esto con un ejemplo. Supongamos que queremos modelar un gato, crearemos un objeto llamado Gato que tiene propiedades como color, edad, estado de ánimo (bueno / malo / somnoliento) y dueño.

Entonces el gato tiene algunas acciones: ronronear, rascar o alimentarse.

Cat 
-------- 
color 
age 
mood 
owner 
purr() 
scratch() 
feed(cat_food) 
CatFood 
-------- 
taste

Básicamente, estamos tratando de describir cosas reales en código con propiedades (llamadas propiedades de objeto) y acciones (llamadas métodos).

Mientras creamos un blog, necesitamos algo de contenido de texto y un título. También es necesario tener el nombre del autor, la fecha de creación y también la fecha de publicación.

Entonces nuestro blog tendrá los siguientes objetos:

Post 
-------- 
title 
text 
author 
created_date 
published_date

También necesitamos tener algún método que publique esa publicación. Como ahora sabemos qué es un objeto, podemos crear un modelo Django para nuestra publicación de blog.

Un modelo es un tipo especial de objeto en Django y se guarda en la base de datos. Almacenaremos nuestros datos en la base de datos SQLite.

Creando una aplicación

Para mantener todo claro, crearemos una aplicación separada dentro de nuestro proyecto. A continuación, intentaremos crear una aplicación web de blog ejecutando el comando simple mencionado a continuación.

Ahora notaremos que se crea un nuevo directorio myBlog y ahora contiene varios archivos. Los directorios y archivos de nuestro proyecto deben ser los siguientes:

Después de crear una aplicación, también necesitamos decirle a Django que la use. Lo hacemos en el archivo myFirstDjangoProject / settings.py.

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

Crear un modelo de publicación de blog

En el myBlog/models.py archivo, definimos todos los objetos llamados Modelos; este es un lugar en el que definiremos nuestra publicación de blog.

Abramos myBlog / models.py, eliminemos todo de él y escribamos el código de la siguiente manera:

En primer lugar, importamos algunas funcionalidades de otros archivos llamando desde o importando. Entonces, con esto, en lugar de copiar y pegar las mismas cosas en cada archivo, podemos incluir algunas partes confrom and import.

class Post(models.Model) - Esta línea define nuestro modelo (es un objeto).

  • class es una palabra clave especial que indica que estamos definiendo un objeto.

  • Post es el nombre de nuestro modelo. Siempre comience el nombre de una clase con una letra mayúscula.

  • modelos.Modelo significa que la publicación es un modelo de Django, por lo que Django sabe que debe guardarse en la base de datos.

Ahora analicemos las propiedades que definimos anteriormente: título, texto, fecha_creada, fecha_publicada y autor. Para hacer eso, necesitamos definir el tipo de cada campo.

  • models.CharField: así es como se define el texto con un número limitado de caracteres.

  • Models.TextField: esto es para texto largo sin límite.

  • Models.DateTimeField: esto es para fecha y hora.

  • Models.ForeignKey: este es un enlace a otro modelo.

Definimos una función / método con def y publicar es el nombre del método.

Los métodos a menudo devuelven algo. Aquí, cuando llamamos a __str __ (), obtendremos un texto (cadena) con un título de publicación.

Crear tablas para modelos en su base de datos

El paso final es agregar un nuevo modelo a nuestra base de datos. Primero, debemos dejar que Django comprenda que hemos realizado algunos cambios en nuestro modelo. Hagamos lo mismo en la ventana de nuestra consola con el comandopython manage.py make migrations myBlog como se muestra a continuación -

Luego, Django prepara un archivo de migración que ahora tenemos que aplicar a nuestra base de datos. En nuestra consola podemos escribir:python manage.py migrate myBlog y la salida debe ser la siguiente:

Nuestro modelo Post está ahora en nuestra base de datos.

Administrador de Django

Para agregar, editar y eliminar las publicaciones que acabamos de modelar, usamos el administrador de Django.

Así que abramos el myBlog/admin.py file y ponga debajo el contenido en esto:

En primer lugar, importamos (incluimos) el modelo Post definido en el capítulo anterior. Para que nuestro modelo sea visible en la página de administración, debemos registrar el modelo con admin.site.register (Publicar).

Para iniciar sesión en un sitio de administración, debe crear un superusuario, una cuenta de usuario que tenga control sobre todo en el sitio. Así que detenga el servidor web y escriba la línea de comando pythonmanage.py createsuperusery presione enter.

Bien, es hora de mirar nuestro modelo Post. Recuerde ejecutar python manage.py run server en la consola para ejecutar el servidor web. Vaya a su navegador y escriba la direcciónhttps://127.0.0.1:8000/admin/.Inicie sesión con las credenciales que acabamos de elegir. Entonces debería ver el panel de administración de Django como se muestra a continuación:

Ve a Publicaciones y experimenta un poco con él. Puede agregar muchas publicaciones de blog y contenido desde cualquier lugar. Tu blog se verá así:

Esta es solo una descripción general de Django y podemos crear un blog con solo unas pocas líneas de código.