Bibliotecas de desarrollo web de Python - Guía rápida
Cada vez que un usuario abre un navegador web como Google Chrome o Mozilla y busca 'Desarrollo web', aparecen miles de resultados en poco tiempo. ¿Qué hace esto posible? ¡Desarrollo web! En términos generales, se refiere al trabajo asociado con la construcción, creación y mantenimiento de sitios web para alojamiento a través de intranet o Internet. El trabajo asociado al diseño de sitios web contiene múltiples áreas: programación web, gestión de bases de datos, diseño web, publicación web, etc.
El desarrollo web incluye todos los códigos que influyen en el funcionamiento de un sitio web. Podemos separar todo el proceso de desarrollo web en dos categorías:
- Front-end
- Back-end
Aunque el desarrollo web frontend y backend son ciertamente distintos entre sí, también son como las dos caras de la misma moneda. Un sitio web completo depende de que cada lado se comunique y funcione eficazmente con el otro como una sola unidad. Tanto el front-end como el back-end son igualmente importantes en el desarrollo web.
El front-end o el lado del cliente de una aplicación es el código responsable de todo lo que el usuario experimenta directamente en la pantalla, desde colores de texto hasta botones, imágenes y menús de navegación. Algunas de las habilidades y herramientas comunes que utilizan los desarrolladores front-end se enumeran a continuación:
- HTML/CSS/JavaScript
- Preprocesadores CSS
- Frameworks
- Libraries
- Git y Github
Generalmente, el back-end / servidor de una aplicación es responsable de administrar la información dentro de la base de datos y de entregar esa información al front-end. El back-end de un sitio web consta de un servidor, una aplicación y una base de datos. En general, involucra todo lo que sucede antes de acceder a su navegador. Las herramientas necesarias en el desarrollo web back-end son:
Programming language - Ruby, PHP, Python, etc.
Database - MySQL, PostgreSQL, MongoDB, Oracle, etc.
¿Por qué desarrollo web?
En el mundo actual, existen múltiples opciones para promover su negocio o sus habilidades y compartir sus ideas. Algunos de ellos son la promoción a través de sitios web, aplicaciones nativas en mercados, etc. La tendencia de crear un nuevo sitio web como herramienta de desarrollo empresarial está ganando impulso rápidamente en todo el mundo. Sin embargo, es posible que algunos de nosotros desconozcamos la importancia que tiene un sitio web en el crecimiento de una empresa.
Actualmente hay numerosas empresas emergentes que luchan por establecer su presencia en el mercado abierto. Sin embargo, también es cierto que la mayoría de ellos no logran obtener el público objetivo que desean. Una de las razones principales que los está derribando es que subestiman el potencial de un sitio web desarrollado con todas las funciones para generar negocios para ellos. El desarrollo de sitios web para empresas o cualquier otro propósito puede resultar bastante fructífero.
Veamos algunas de las razones importantes por las que el desarrollo de sitios web es importante para el crecimiento empresarial:
Llegar a su público
Los sitios web en línea pueden llegar a una audiencia más amplia y no están restringidos a una plataforma que restrinja las aplicaciones nativas. Los espectadores o clientes pueden tener fácil acceso, es decir, desde una computadora de escritorio / portátil a un dispositivo móvil, ya que los sitios web tienen la capacidad de mostrar el contenido a través de un navegador web.
En comparación con la aplicación nativa, la navegación web es mucho más simple porque no requiere que los usuarios accedan a la tienda de aplicaciones en sus dispositivos o descarguen su aplicación (que puede incluir uno o más procesos para acceder a sus contenidos). La distribución de sus datos es mucho más flexible y ágil con aplicaciones basadas en la web que con las nativas, ya que no hay requisitos estrictos de la tienda de aplicaciones ni restricciones de contenido a seguir.
Otra herramienta que es muy útil para el desarrollo web es el poder de utilizar técnicas de SEO para dirigirse a sus audiencias.
24/7 accesible
En lugar de establecer una salida física para la empresa, si el propietario de la empresa desarrolla un sitio web como un foro en línea o similar, habrá muchas posibilidades de obtener una mayor audiencia en línea para vincular. Esto se debe a que la mayoría de las personas están conectadas a Internet todo el día.
Generalmente, las personas prefieren buscar la forma más inteligente de verificar en línea primero y luego tomar una decisión. Entonces, si el propietario de la empresa completa todos los detalles básicos del producto y crea una manera segura de llevar el producto al cliente de manera oportuna, la gente preferirá comprar en línea en lugar de visitar el punto de venta físicamente. Esto también permite que las personas accedan a él incluso en la hora más extraña del día.
Conveniencia
Un sitio web completamente funcional proporciona una mayor ventaja para los usuarios, donde siempre pueden sintonizar y buscar lo que necesitan. Generalmente, los usuarios evitan ir a las tiendas físicamente si tienen la opción de conseguirlo en línea. Por lo tanto, si usted es un hombre de negocios inteligente, preferiría tener todos los detalles de sus productos o sus tiendas en el sitio web solo para obtener negocios, lo que de otra manera no podría hacer.
Marketing global
Con un sitio web en línea, puede conectarse a foros sociales y comercializar su producto / servicio a una gran audiencia en todo el mundo. Con esto, puede publicitar y compartir regularmente su trabajo en foros sociales para obtener una huella mucho mayor de público objetivo.
Fuente creíble
Un portal en línea es la plataforma más confiable para cualquier empresa / organización. A veces, los sitios web oficiales pueden incluso funcionar como su única oficina. Considere un escenario en el que no es fácil acceder a la ubicación física de una empresa. En tal caso, puede superar esta preocupación centrándose en su sitio web.
En resumen, al desarrollar un sitio web, puede promocionar sus servicios con unos pocos clics y puede captar la atención de consumidores de diversas partes del mundo. El sitio web de una empresa puede resultar extraordinario para ganar negocios no solo en un tiempo más corto sino también con una audiencia mucho mayor.
Python es uno de los lenguajes más aceptables entre los desarrolladores web y de aplicaciones debido a su fuerte énfasis en la eficiencia y la legibilidad. Existen numerosos frameworks web de Python destacados, cada uno con sus propias especialidades y características.
Django
Aquí, describiremos algunos detalles y características necesarios del marco de Django.
Category - Django pertenece al framework Python de pila completa.
Release - Versión más reciente - Versión 2.1, versión comúnmente utilizada - Versión 1.8, 1.6.
About- Creado por desarrolladores experimentados, Django es un marco web de Python de alto nivel que permite un desarrollo de diseño rápido, limpio y pragmático. Django maneja muchas de las complejidades del desarrollo web, por lo que puede concentrarse en escribir su aplicación sin la necesidad de reinventar la rueda. Es gratis y de código abierto.
Para mapear objetos a la tabla de la base de datos, Django usa ORM y el mismo se usa para transferir de una base de datos a otra.
Funciona con la mayoría de las bases de datos importantes como Oracle, MySQL, PostgreSQL, SQLite, etc.
Existen numerosos sitios web en la industria que utilizan Django como su marco principal para el desarrollo de backend.
Características de Django
Algunas de las características ejemplares de este marco web Python son:
- Enrutamiento de URL
- Authentication
- Migraciones de esquemas de bases de datos
- ORM (mapeador relacional de objetos)
- Motor de plantillas
El sitio web oficial del marco de Django es:https://www.djangoproject.com/
Matraz
Category - Flask pertenece a los frameworks Non Full-stack.
Release - 1.0.2 lanzado el 2018-05-02
About- Está clasificado como un micro-framework ya que no necesitamos ninguna biblioteca o herramienta en particular. No tiene una capa de abstracción de base de datos o validación de formularios ni ningún otro componente donde las bibliotecas de terceros preexistentes proporcionan funciones comunes. Sin embargo, flask admite múltiples extensiones que extendieron las funciones de la aplicación como si estuvieran implementadas en el propio Flask. Existen extensiones para mapeadores relacionales de objetos, validación de formularios, manejo de carga, varias tecnologías de autenticación abierta y varias herramientas relacionadas con marcos comunes.
Características del matraz
- Soporte integrado para pruebas unitarias
- Despacho tranquilo de solicitudes
- Contiene servidor de desarrollo y depurador
- Utiliza plantillas Jinja2
- Soporte para cookies seguras
- Unicode-based
- 100% compatible con WSGI 1.0
- Documentación extensa
- Compatibilidad con Google App Engine
- Extensiones disponibles para mejorar las funciones deseadas
Web2py
Category - Web2py pertenece a la familia de marcos Full-stack.
Release - 2.17.1, lanzado el 2018-08-06
About- Python 2.6, 2.7 a Python 3.x versión. Sin más dependencias, es un paquete completo en sí mismo. El desarrollo, la administración de la base de datos, la depuración, la implementación, las pruebas y el mantenimiento de las aplicaciones se pueden realizar a través de la interfaz web, pero generalmente no es necesario. Es un marco de trabajo de código abierto escalable que viene con su propio IDE basado en web junto con un editor de código, implementación con un clic y depurador.
Características de Web2py
Este marco viene con muchas herramientas de desarrollo y características integradas que eliminan la molestia de la complejidad para los desarrolladores.
Sin instalación ni configuración, es fácil de ejecutar.
Admite casi todos los sistemas operativos principales, como Windows, Unix / Linux, Mac, Google App Engine y casi todas las plataformas de alojamiento web a través de la versión Python 2.7 / 3.5 / 3.6 /.
Fácil de comunicarse con MySQL, MSSQL, IBM DB2, Informix, Ingres, MongoDB, SQLite, PostgreSQL, Sybase, Oracle y Google App Engine.
Previene los tipos más comunes de vulnerabilidades, incluidos Cross Site Scripting, Injection Flaws y Malicious File Execution.
Admite el seguimiento de errores y la internacionalización.
Legibilidad de múltiples protocolos.
Emplea prácticas de ingeniería de software exitosas que hacen que el código sea fácil de leer y mantener.
Garantice avances orientados al usuario mediante la compatibilidad con versiones anteriores.
Pirámide
Category - Pyramid es un marco que no es de pila completa
Release - 1.9.2, lanzado el 2018-04-23
About- Pyramid es un marco web Python pequeño, rápido y práctico. Se desarrolla como parte del Proyecto Pilones. Tiene una licencia similar a BSD. Hace que el desarrollo y la implementación de aplicaciones web en el mundo real sea más divertido, más predecible y más productivo.
Características de la pirámide
Python Pyramid es un marco de código abierto con las siguientes características:
Simplicity - Cualquiera puede empezar a trabajar con él sin ningún conocimiento previo al respecto.
Minimalism - Bastante listo para usar, Pyramid viene con solo algunas herramientas importantes, que son necesarias para casi todas las aplicaciones web, ya sea de seguridad o de servicios estáticos como JavaScript y CSS o adjuntar URL al código.
Documentation - Incluye documentación exclusiva y actualizada.
Speed - Muy rápido y preciso.
Reliability- Está desarrollado teniendo en cuenta que es conservador y probado exhaustivamente. Si no se prueba correctamente, se considerará roto.
Openness - Se vende con licencia permisiva y abierta.
Guión
Category - El marco Dash pertenece a "otros" marcos web de Python.
Release - 0.24.1, backend del tablero del núcleo.
About- Dash como biblioteca de código abierto para crear visualizaciones interactivas basadas en la web. El equipo de plotly creó Dash, un marco de código abierto que aprovecha Flask, React.js y plotly.js para crear aplicaciones personalizadas de visualización de datos. Lo más destacado de esta biblioteca es que puede crear una aplicación web altamente interactiva solo a través del código Python. A los científicos de datos les encanta el framework dash, especialmente aquellos que están menos familiarizados con el desarrollo web.
Con Dash, los desarrolladores obtienen acceso a todas las propiedades configurables y la instancia subyacente de Flask. Las aplicaciones desarrolladas con el marco de Dash se pueden implementar en servidores y eventualmente se renderizan en el navegador web.
Las aplicaciones Dash son inherentemente multiplataforma (Linux / Win / Mac) y compatibles con dispositivos móviles, y las capacidades de las aplicaciones se pueden ampliar mediante el amplio conjunto de complementos de Flask.
Características de Dash
- Proporciona acceso a propiedades configurables e instancias de Flask
- A través de los complementos Flash, podemos ampliar las capacidades de la aplicación Dash
- Mobile-ready
En este capítulo, analizaremos en detalle Django Framework.
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 son, en muchos casos, desarrollados activamente y 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 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.
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 en 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
Echar 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 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 nuestro proyecto Django se ejecute. 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, USUARIO, CONTRASEÑA, PUERTO, NOMBRE de la base de datos y MOTOR 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 = '/ estática /'
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.
Flask es un micro-framework que tiene muy poca dependencia de bibliotecas externas. Es un marco muy ligero y nos da libertad para hacer lo que queramos.
En este capítulo, vamos a construir un proyecto usando el framework Python y Flask.
Inicio y configuración del matraz
Como las bibliotecas de Python más utilizadas, el paquete Flask se puede instalar desde el índice de paquetes de Python (PPI). Primero creemos un directorio (en este capítulo, hemos creado un directorio llamadoflaskProject) luego creó un entorno virtual (y lo llamó como flaskEnv) donde se cargarán todas las dependencias relacionadas con el proyecto (incluido el matraz). También puede instalar flask-sqlalchemy para que su aplicación de matraces tenga una forma sencilla de comunicarse con la base de datos SQL.
Después de instalar el matraz, su flaskEnv (nuestro nombre de entorno virtual) mostrará algo como a continuación:
Creando una aplicación con matraz
Al instalar el matraz, podemos crear un sencillo "hello application in flask”Con muy pocas líneas de código de la siguiente manera:
Escriba lo siguiente en la terminal:
$python flaskapp.py
Y puede ver el siguiente resultado:
Que se ejecuta en http://127.0.0.1:5000/ o en localhost:5000
A continuación se muestra la explicación de lo que hicimos en nuestro código de ejemplo:
En primer lugar, importamos la biblioteca de clases Flask. Una instancia de esta clase es la aplicación WSGI.
En segundo lugar, creamos una instancia de esta clase. El paquete de aplicación o el nombre del módulo es nuestro primer argumento. Es obligatorio que el matraz sepa dónde encontrar archivos estáticos, plantillas y otros archivos.
El siguiente es el decorador route () que usamos para saber qué URL debe activar nuestro método / función.
Creación de enrutamiento de URL
El enrutamiento de URL hace que las URL de su aplicación web sean fáciles de recordar. Ahora crearemos algunas rutas URL:
/hello
/members
/members/name
Podemos escribir el siguiente código basado en la URL anterior y guardarlo como app.py.
from flask import Flask, render_template
app = Flask(__name__)
@app.route('/')
def index():
return "Index!"
@app.route('/Hello')
def hello():
return "Hello, World!"
@app.route("/members")
def members():
return "Members"
@app.route("/members/<name>/")
def getMember(name):
return name
if __name__ == '__main__':
app.run(debug=True)
$ python app.py
Running on http://localhost:5000/
Obtendremos el siguiente resultado en nuestro navegador:
Podemos probar otras URL en nuestro navegador de la siguiente manera:
Running on http://localhost:5000/hello, will give the following output −
Running on http://localhost:5000/members, will give −
Running on http://localhost:5000/members/TutorialsPoint/, will give you the following output −
Pero normalmente no queremos devolver una cadena (como arriba), devolvemos plantillas. Para eso queremos usar una función "render_template”Del matraz y devuelve render_template con alguna entrada. Entonces, la siguiente función hará nuestro trabajo:
from flask import render_template
return render_template(‘home.html’)
Creemos una plantilla de carpeta y coloquemos el archivo home.html en ella.
A continuación, discutiremos sobre el diseño. En lugar de usar la etiqueta de cabeza y cuerpo html para cada plantilla, diseñaremos un diseño para incluir etiquetas de cabeza y cuerpo y envolver las vistas actuales o la plantilla actual. Para eso, tenemos que crear un archivo separado y llamarlolayout.html. En esto, podemos poner nuestra etiqueta de cabeza normal, etiqueta de cuerpo y todas las demás etiquetas requeridas.
Podemos crear nuestro nuevo layout.html con las siguientes líneas de código:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>MyFlaskApp</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css">
</head>
<body>
{% include 'includes/_navbar.html' %}
<div class="container">
{% block body %}
{% endblock %}
</div>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/js/bootstrap.min.js">
</script>
</body>
</html>
En el código anterior, le hemos dado la pista principal, MyFlaskAp, usamos css cdn en el encabezado y javascript en el bloque del cuerpo para habilitar el bootstrap.
Ahora, tenemos que crear una barra de navegación para cada página. Para eso, primero tenemos que crear una carpeta de inclusión y luego crear el archivo _navbar.html dentro de ella. Ahora, en _navbar.html, tenemos que usar la plantilla de inicio estándar de getbootstrap.com. El archivo _navbar.html recién creado será el siguiente:
E incluya este archivo _navbar.html en nuestro archivo layout.html.
{% include 'includes/_navbar.html' %}
Como tenemos el bloque de diseño, podemos extender este bloque en nuestro archivo de inicio (home.html).
Nuestro archivo home.html se puede crear usando el siguiente código:
{% extends 'layout.html' %}
{% block body %}
<div class="jumbotron text-center">
<h1>Welcome to FlaskApp</h1>
<p>This application is built on Flask webframework!</p>
</div>
{% endblock %}
Usando esto si intentamos ejecutar nuestro archivo flaskapp.py, entonces podríamos ver la siguiente salida en nuestro navegador:
Ahora queremos activar (actualmente las pestañas no funcionan) nuestro aboutlengüeta. Cree una ruta para la pestaña Acerca de y cree un archivo de plantilla,about.html.
Acerca de la ruta de la pestaña en appflask.py será como se muestra a continuación:
El archivo about.html tendrá el siguiente contenido:
Así que ahora nos ocupamos de Home y About. Para los artículos, podemos crear un nuevo archivo (data.py) en el directorio raíz, donde colocamos los datos y lo llamamos en nuestra página web.
data.py
def Articles():
articles = [
{
'uid': 1,
'title': 'Article_One',
'body': 'Flask, being a microframework, often requires some repetitive step
to get a third party library working. Because very often these steps could
be abstracted to support multiple projects the Flask Extension Registry
was created.',
'Author': 'Rajesh Joshi',
'Created-on': '07-09-2018'
},
{
'uid': 2,
'title': 'Article_Two',
'body': "Flask, being a microframework, often requires some repetitive steps
to get a third party library working. Because very often these steps could
be abstracted to support multiple projects the Flask Extension Registry
was created.",
'Author': 'Rajesh J',
'Created-on': '07-09-2018'
},
{
'uid': 3,
'title': 'Article_Three',
'body': 'Flask, being a microframework, often requires some repetitive steps
to get a third party library working. Because very often these steps could be
abstracted to support multiple projects the Flask Extension Registry
was created.',
'Author': 'Joshi Rajesh',
'Created-on': '07-09-2018'
}
]
return articles
A continuación se muestra el código para articles.html, que mostrará los títulos de los artículos para cada uid.
{% extends 'layout.html' %}
{% block body %}
<h1>Articles</h1>
{% for article in articles %}
<li class="list-group-item">
<a href="article/{{article.uid}}"> {{article.title}}</a>
</li>
{% endfor %}
{% endblock %}
En resumen, Flask es uno de los frameworks web de Python más populares debido a su peso ligero. Aunque es micro, es un marco web de Python extensible. Al proporcionar la funcionalidad requerida, flask acelera el desarrollo de una aplicación web simple. Por lo tanto, Flask es más adecuado para aplicaciones más pequeñas y menos complicadas.
Web2py es un marco fácil de usar. Con web2py, no se requiere instalación ni configuración, ya que es portátil y también se puede ejecutar en una unidad USD. Se basa en los frameworks MVC como muchos otros frameworks de Python. Aunque la mayoría de ellos no son compatibles con versiones anteriores de Python, web2py aún admite versiones anteriores: python 2.6 y 2.7. También es compatible con LDAP para la autenticación, que es ampliamente aceptado en estos días.
Web2py intenta reducir la barrera de entrada al desarrollo web centrándose en tres objetivos principales:
- Desarrollo rápido
- Facilidad de uso
- Security
Teniendo en cuenta la perspectiva del usuario, Web2py se construye y se optimiza constantemente internamente para convertirlo en un marco más rápido y sencillo que incluye compatibilidad con versiones anteriores.
Instalación y configuración de Web2py Framework
Ejecutar un web2py es fácil, necesita descargar el exe desde el siguiente enlace: http://www.web2py.com/init/default/download
Para Windows, puede descargar el archivo zip, descomprimirlo y ejecutar el archivo exe directamente o desde la línea de comandos. Se le solicitará la siguiente pantalla solicitando la contraseña de administrador.
Puede elegir una contraseña de administrador e iniciar el servidor. Verá la siguiente pantalla:
Creando una aplicación usando Web2py
Ahora estamos listos para crear una nueva aplicación. Haga clic en la pestaña de administración ubicada en la parte inferior. Entonces, después de ingresar la contraseña de administrador, obtendremos la siguiente pantalla:
Vaya a la nueva aplicación simple, ingrese el nombre de la aplicación (como helloWeb2py) y haga clic en crear. Esto mostrará la página de la interfaz de diseño como se indica a continuación:
También puede ir a su web en vivo actual, helloWeb2py, simplemente escriba http://127.0.0.1:8000/helloWeb2py en su máquina local, obtendrá el siguiente resultado:
En la página de diseño de la aplicación helloWeb2py, vaya al controlador y haga clic en el botón editar junto a default.py. Si cambia el valor de retorno de la función index (), se mostrará el siguiente resultado:
Guarde los cambios y ahora puede verificar los cambios realizados en su aplicación helloWeb2py. Solo actualiza elhttp://127.0.0.1:8000/helloWeb2py enlace y verá el resultado a continuación:
Implementar la aplicación en la plataforma en la nube
Ahora, si desea implementar su aplicación en la plataforma en la nube, vuelva a su página de inicio y haga clic en el sitio. Puede elegir cualquier opción de implementación. Aquí, elegimos "pythonAnywhere". Vaya al sitio web de pythonAnywhere y regístrese (si aún no lo ha hecho). Haga clic en“Add a new web app”y complete todas las credenciales (Elija la aplicación web2py). Todo listo.
Ahora ve a https://username.pythonanywhere.com/welcome/default/index, haga clic en la pestaña de administración (ingrese la contraseña). A continuación, haga clic en cargar e instalar la aplicación empaquetada. Complete las credenciales como se muestra a continuación y haga clic en instalar.
Una vez que todo esté hecho, aparecerá un mensaje emergente como se indica a continuación:
Ahora, para ver su aplicación, abra el siguiente enlace:
https://username.pythonanywhere.com/welcome/default/index y puedes ver la siguiente pantalla -
Nuestra primera aplicación web2py se creó e implementó con éxito.
En resumen, Web2py es un marco de desarrollo web gratuito, rápido y seguro que está escrito completamente en Python y fomenta el uso de Python en todas las formas posibles (modelo, vista, controlador). Es un marco muy bueno para pequeñas aplicaciones web o prototipos, pero no cumple con los requisitos de calidad de clase empresarial. Se debe a que, en una aplicación de nivel empresarial, la complejidad de la resolución de errores aumentará exponencialmente debido a la falta de pruebas unitarias, informes de errores buenos y precisos y modelos dispersos.
Pyramid es un marco de desarrollo de aplicaciones web general, de código abierto, construido en Python. Permite al desarrollador de Python crear aplicaciones web con facilidad.
Instalación, puesta en marcha y configuración
Como se describe, "el marco de inicio pequeño, final grande, permanecer terminado", Pyramid se parece mucho a Flask, que requiere muy poco esfuerzo para instalar y ejecutar. De hecho, reconocerá que algunos de los patrones son similares a Flask una vez que comience a construir esta aplicación.
Los siguientes son los pasos para crear un entorno de marco piramidal:
Primero, cree un directorio de proyecto. Aquí, hemos creado un directorio llamadopyramidProject (puede elegir el nombre que desee).
A continuación, cree un entorno virtual donde instalará todas las dependencias específicas del proyecto. Aquí, creamos una carpeta de entorno virtual llamadapyramidEnv donde está instalado Pyramid.
Luego, vaya al directorio, pyramidEnv e instala la pirámide con pip install pyramid.
Una vez que todo esté hecho como se mencionó anteriormente, la estructura de su directorio será como se muestra a continuación:
Y la versión piramidal instalada en el sistema se da a continuación:
Conceptos básicos
El marco de la pirámide se basa en los siguientes conceptos básicos:
Zope (extensibilidad, recorrido, seguridad declarativa): Pyramid se basa libremente en Zope en términos de extensibilidad, el concepto de recorrido y la seguridad declarativa.
Pylons(Envío de URL, visión sin opiniones de la persistencia, creación de plantillas, etc.) - Otra área de donde la pirámide extrae su concepto es el proyecto de las torres. Los pilones tienen ese concepto de rutas, que llama al envío de URL dentro del marco piramidal y también tienen la visión sin opiniones de la capa de persistencia o plantillas.
Django(Ver, nivel de documentación) - Pyramid también recibe pistas de Django. La forma en que tomamos nuestro punto de vista, enrutamos nuestra URL y el nivel de documentación es muy Django.
Las siguientes son las características del marco Pyramid:
Es el framework web Python más rápido conocido.
Es compatible con proyectos pequeños y grandes (por qué reescribir cuando se supera su pequeño marco).
Admite aplicaciones web de un solo archivo como microframeworks.
Tiene sesiones integradas.
Admite eventos similares a Plone / Zope.
Proporciona Gestión de transacciones (si ya se ha dado cuenta de que hemos utilizado Zope antes).
Configuración
La configuración es la configuración que influye en el funcionamiento de una aplicación. Hay dos formas de configurar una aplicación piramidal: configuración imperativa y configuración declarativa.
Soportes de configuración piramidal -
Configuración imperativa o incluso la anulación de las configuraciones basadas en decoradores
Detección de conflictos de configuración (incluida una determinación más local frente a menos local)
Extensibilidad de la configuración (incluida desde varias aplicaciones)
Políticas flexibles de autenticación y autorización
Introspección programática de la configuración (ver el estado actual de las rutas para generar navegación)
Generación de URL
En pirámide, podemos generar URL para rutas, recursos y activos estáticos. Es fácil y flexible trabajar con API de generación de URL. Al generar URL a través de las distintas API de Pyramid, los usuarios pueden cambiar la configuración de forma arbitraria sin preocuparse mucho de romper un enlace con cualquiera de sus páginas web.
En resumen, URL en pirámide -
admite la generación de URL para permitir cambios en la aplicación que no rompan los enlaces.
genera URL a recursos estáticos que se encuentran dentro o fuera de la aplicación.
admite Rutas y Cruce.
Puntos de vista
Uno de los trabajos principales de Pyramid es encontrar e invocar una vista invocable cuando una solicitud llega a su aplicación. Las vistas invocables son fragmentos de código que hacen algo interesante en respuesta a una solicitud realizada en su aplicación.
Cuando asigna sus vistas a su envío de URL o código de Python, puede haber cualquier tipo de llamada. Las vistas pueden ser una declaración de función o una instancia, se pueden usar como una vista en la pirámide.
Algunos puntos importantes sobre las vistas se dan a continuación:
Las vistas se generan desde cualquier invocable.
Las vistas basadas en renderizadores pueden simplemente devolver diccionarios (no es necesario para devolver un objeto de estilo webby).
Admite múltiples vistas por ruta (GET frente a POST frente a verificación de encabezado HTTP, etc.).
Adaptadores de respuesta de vista (cuando desee especificar cómo deben manejarse los valores de devolución de vista frente a los objetos de respuesta).
Extensibilidad
Pyramid está diseñado pensando en la extensibilidad. Por lo tanto, si un desarrollador piramidal tiene en cuenta ciertas restricciones al crear una aplicación, un tercero debería poder cambiar el comportamiento de la aplicación sin necesidad de modificar su código fuente. El comportamiento de una aplicación piramidal que obedece a ciertas restricciones se puede anular o ampliar sin ninguna modificación. Está diseñado para implementaciones flexibles en múltiples entornos (sin singletons). Pyramid tiene soporte de middleware "Tweens" (middleware WSGI, pero se ejecuta en el contexto de Pyramid).
Ejecución de un programa Hello, Pyramid
El programa más simple que podemos pensar después de instalar el marco piramidal para comprobar si todo está funcionando bien, es ejecutar un programa simple "Hola, mundo" o "Hola, Pyramid".
A continuación se muestra mi programa piramidal "Hola, Pyramid" en el número de puerto 8000:
El ejemplo simple anterior es fácil de ejecutar. Guárdelo como app.py (en este, le hemos dado el nombre pyramid_helloW.py).
Ejecutando el programa más simple: -
A continuación, abra http://localhost:8000/en un navegador y verá el mensaje ¡Hola, pirámide! Mensaje de la siguiente manera:
La siguiente es la explicación del código anterior:
Línea no. 1-3
En la cabecera del archivo, tenemos declaraciones de importación. La primera línea importa la función make_server, que puede crear un servidor web simple cuando se pasa a una aplicación. La segunda y tercera línea importan la función de configuración y respuesta de la pirámide. Estas funciones se utilizan para configurar detalles y establecer parámetros para la aplicación y responder a solicitudes, respectivamente.
Línea no. 5-6
Ahora tenemos una definición de función llamada hello_world. Implemente el código de vista que genera la respuesta. Una función que cumple con el requisito de una vista es responsable de representar el texto que se devolverá a la entidad solicitante. En el caso anterior, la función, cuando se llama, usa la función Respuesta que importamos anteriormente. Esto devuelve un valor que se le debe dar al cliente.
Línea no. 8
if __name__ == '__main__': Python está diciendo, "Empiece aquí cuando se ejecute desde la línea de comandos", en lugar de cuando se importe este módulo.
Línea no. 9-11
En la línea no. 9, creamos una variable llamada config a partir del objeto creado por la función del configurador que importamos en la parte superior del programa. Las líneas 10 y 11 llaman al método add_route y add_view de este objeto. Este método se utiliza para definir una vista que la aplicación puede utilizar. Como podemos ver, pasamos la función hello_world que definimos anteriormente. Aquí es donde esa función se incorpora realmente como vista.
Línea no. 12-14
En esto, realmente creamos la aplicación WSGI llamando al método make_wsgi_app del objeto de configuración. Esto usa los atributos del objeto, como la vista que agregamos, para crear una aplicación. Esta aplicación luego se pasa a la función make_server que importamos para crear un objeto que pueda iniciar un servidor web para servir nuestra aplicación. La última línea lanza este servidor.
Nuestra hello world applicationes una de las aplicaciones piramidales más simples y fáciles posibles, configurada "imperativamente". Es imperativo porque disponemos de toda la potencia de Python mientras realizamos las tareas de configuración.
En resumen, Pyramid es un marco web Python de código abierto con una comunidad grande y activa. Esta gran comunidad contribuye a hacer que el marco web Python sea popular y relevante. El marco web Pyramid simplifica y acelera el desarrollo de aplicaciones web al proporcionar un conjunto de funciones y herramientas sólidas.
En este capítulo, analizaremos en detalle el marco de Dash.
Dash es un marco de Python de código abierto que se utiliza para crear aplicaciones web analíticas. Es una poderosa biblioteca que simplifica el desarrollo de aplicaciones basadas en datos. Es especialmente útil para los científicos de datos de Python que no están muy familiarizados con el desarrollo web. Los usuarios pueden crear paneles de control increíbles en su navegador usando dash.
Construido sobre Plotly.js, React y Flask, Dash vincula elementos de la interfaz de usuario moderna como menús desplegables, controles deslizantes y gráficos directamente a su código analítico de Python.
Las aplicaciones Dash consisten en un servidor Flask que se comunica con los componentes React de front-end mediante paquetes JSON a través de solicitudes HTTP.
Las aplicaciones de Dash están escritas exclusivamente en Python, por lo que NO es necesario HTML o JavaScript.
Configuración del tablero
Si Dash aún no está instalado en su terminal, instale las bibliotecas de Dash mencionadas a continuación. Como estas bibliotecas están en desarrollo activo, instálelas y actualícelas con frecuencia. También se admiten Python 2 y 3.
- pip install dash == 0.23.1 # El backend del tablero principal
- pip install dash-renderer == 0.13.0 # La interfaz del tablero
- pip install dash-html-components == 0.11.0 # componentes HTML
- pip install dash-core-components == 0.26.0 # Componentes sobrealimentados
- pip install plotly == 3.1.0 # Biblioteca de gráficos de trama
Para asegurarnos de que todo funcione correctamente, aquí creamos un archivo dashApp.py simple.
Diseño del tablero o de la aplicación
Las aplicaciones Dash se componen de dos partes. La primera parte es el "diseño" de la aplicación, que básicamente describe cómo se ve la aplicación. La segunda parte describe la interactividad de la aplicación.
Componentes principales
Podemos construir el diseño con el dash_html_components y el dash_core_componentsbiblioteca. Dash proporciona clases de Python para todos los componentes visuales de la aplicación. También podemos personalizar nuestros propios componentes con JavaScript y React.js.
importar dash_core_components como dcc
importar dash_html_components como html
El dash_html_components es para todas las etiquetas HTML donde el dash_core_components es para la interactividad construida con React.js.
Usando las dos bibliotecas anteriores, escribamos un código como se indica a continuación:
app = dash.Dash()
app.layout = html.Div(children=[
html.H1(children='Hello Dash'),
html.Div(children='''Dash Framework: A web application framework for Python.''')
Y el código HTML equivalente se vería así:
<div>
<h1> Hello Dash </h1>
<div> Dash Framework: A web application framework for Python. </div>
</div>
Escribir la aplicación Simple Dash
Aprenderemos cómo escribir un ejemplo simple en el tablero usando la biblioteca mencionada anteriormente en un archivo dashApp.py.
# -*- coding: utf-8 -*-
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash()
app.layout = html.Div(children=[
html.H1(children='Hello Dash'),
html.Div(children='''Dash Framework: A web application framework for Python.'''),
dcc.Graph(
id='example-graph',
figure={
'data': [
{'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'Delhi'},
{'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Mumbai'},
],
'layout': {
'title': 'Dash Data Visualization'
}
}
)
])
if __name__ == '__main__':
app.run_server(debug=True)
Ejecutando la aplicación Dash
Tenga en cuenta los siguientes puntos mientras ejecuta la aplicación Dash.
(MyDjangoEnv) C: \ Users \ rajesh \ Desktop \ MyDjango \ dash> python dashApp1.py
Aplicación de Flask de servicio "dashApp1" (carga diferida)
Medio ambiente: producción
ADVERTENCIA: No utilice el servidor de desarrollo en un entorno de producción.
En su lugar, utilice un servidor WSGI de producción.
Modo de depuración: activado
Reiniciando con stat
¡El depurador está activo!
PIN del depurador: 130-303-947
Que se ejecuta en http://127.0.0.1:8050/ (Presione CTRL + C para salir)
127.0.0.1 - - [12/Aug/2018 09:32:39] "GET / HTTP/1.1" 200 -
127.0.0.1 - - [12/Aug/2018 09:32:42] "GET /_dash-layout HTTP/1.1" 200 -
127.0.0.1 - - [12/Aug/2018 09:32:42] "GET /_dash-dependencies HTTP/1.1" 200 -
127.0.0.1 - - [12/Aug/2018 09:32:42] "GET /favicon.ico HTTP/1.1" 200 -
127.0.0.1 - - [12/Aug/2018 09:39:52] "GET /favicon.ico HTTP/1.1" 200 -
Visitar http:127.0.0.1:8050/en su navegador web. Debería ver una aplicación que se parece a esto.
En el programa anterior, algunos puntos importantes que deben tenerse en cuenta son los siguientes:
El diseño de la aplicación se compone de un árbol de "componentes" como html.Div y dcc.Graph.
La biblioteca dash_html_components tiene un componente para cada etiqueta HTML. El componente html.H1 (children = 'Hello Dash') genera un elemento HTML <h1> Hello Dash </h1> en su aplicación.
No todos los componentes son HTML puro. Los dash_core_components describen componentes de nivel superior que son interactivos y se generan con JavaScript, HTML y CSS a través de la biblioteca React.js.
Cada componente se describe completamente a través de atributos de palabras clave. Dash es declarativo: describirá principalmente su aplicación a través de estos atributos.
La propiedad de los niños es especial. Por convención, siempre es el primer atributo, lo que significa que puede omitirlo.
Html.H1 (children = 'Hello Dash') es lo mismo que html.H1 ('Hello Dash').
Las fuentes de su aplicación se verán un poco diferentes a las que se muestran aquí. Esta aplicación utiliza una hoja de estilo CSS personalizada para modificar los estilos predeterminados de los elementos. Se permite el estilo de fuente personalizado, pero a partir de ahora, podemos agregar la siguiente URL o cualquier URL de su elección:
app.css.append_css ({"external_url":https://codepen.io/chriddyp/pen/bwLwgP.css}) para que su archivo tenga la misma apariencia de estos ejemplos.
Más sobre HTML
La biblioteca dash_html_components contiene una clase de componente para cada etiqueta HTML, así como argumentos de palabras clave para todos los argumentos HTML.
Agreguemos el estilo en línea de los componentes en el texto de nuestra aplicación anterior:
# -*- coding: utf-8 -*-
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash()
colors = {
'background': '#87D653',
'text': '#ff0033'
}
app.layout = html.Div(style={'backgroundColor': colors['background']}, children=[
html.H1(
children='Hello Dash',
style={
'textAlign': 'center',
'color': colors['text']
}
),
html.Div(children='Dash: A web application framework for Python.', style={
'textAlign': 'center',
'color': colors['text']
}),
dcc.Graph(
id='example-graph-2',
figure={
'data': [
{'x': [1, 2, 3], 'y': [4, 1, 2], 'type': 'bar', 'name': 'Delhi'},
{'x': [1, 2, 3], 'y': [2, 4, 5], 'type': 'bar', 'name': u'Mumbai'},
],
'layout': {
'plot_bgcolor': colors['background'],
'paper_bgcolor': colors['background'],
'font': {
'color': colors['text']
}
}
}
)
])
if __name__ == '__main__':
app.run_server(debug=True)
En el ejemplo anterior, modificamos los estilos en línea de los componentes html.Div y html.H1 con la propiedad style.
Se representa en la aplicación Dash de la siguiente manera:
Hay un par de distinciones clave entre dash_html_components y atributos HTML:
Para la propiedad de estilo en Dash, puede simplemente proporcionar un diccionario, mientras que en HTML, es una cadena separada por punto y coma.
Las claves del diccionario de estilo son camelCased, entonces text-align cambia a textalign.
ClassName en Dash es similar al atributo de clase HTML.
El primer argumento son los hijos de la etiqueta HTML que se especifica mediante el argumento de la palabra clave hijos.
Componentes reutilizables
Al escribir nuestro marcado en Python, podemos crear componentes complejos y reutilizables como tablas sin cambiar contextos o idiomas.
A continuación se muestra un ejemplo rápido que genera una "Tabla" a partir del marco de datos de pandas.
import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
df = pd.read_csv(
'https://gist.githubusercontent.com/chriddyp/'
'c78bf172206ce24f77d6363a2d754b59/raw/'
'c353e8ef842413cae56ae3920b8fd78468aa4cb2/'
'usa-agricultural-exports-2011.csv')
def generate_table(dataframe, max_rows=10):
return html.Table(
# Header
[html.Tr([html.Th(col) for col in dataframe.columns])] +
# Body
[html.Tr([
html.Td(dataframe.iloc[i][col]) for col in dataframe.columns
]) for i in range(min(len(dataframe), max_rows))]
)
app = dash.Dash()
app.layout = html.Div(children=[
html.H4(children='US Agriculture Exports (2011)'),
generate_table(df)
])
if __name__ == '__main__':
app.run_server(debug=True)
Nuestra salida será algo así como:
Más sobre visualización
La biblioteca dash_core_components incluye un componente llamado Graph.
Graph presenta visualizaciones de datos interactivas utilizando la biblioteca de gráficos de JavaScript de código abierto plotly.js. Plotly.js admite alrededor de 35 tipos de gráficos y los renderiza tanto en SVG de calidad vectorial como en WebGL de alto rendimiento.
A continuación se muestra un ejemplo que crea un diagrama de dispersión a partir de un marco de datos de Pandas:
import dash
import dash_core_components as dcc
import dash_html_components as html
import pandas as pd
import plotly.graph_objs as go
app = dash.Dash()
df = pd.read_csv(
'https://gist.githubusercontent.com/chriddyp/' +
'5d1ea79569ed194d432e56108a04d188/raw/' +
'a9f9e8076b837d541398e999dcbac2b2826a81f8/'+
'gdp-life-exp-2007.csv')
app.layout = html.Div([
dcc.Graph(
id='life-exp-vs-gdp',
figure={
'data': [
go.Scatter(
x=df[df['continent'] == i]['gdp per capita'],
y=df[df['continent'] == i]['life expectancy'],
text=df[df['continent'] == i]['country'],
mode='markers',
opacity=0.7,
marker={
'size': 15,
'line': {'width': 0.5, 'color': 'white'}
},
name=i
) for i in df.continent.unique()
],
'layout': go.Layout(
xaxis={'type': 'log', 'title': 'GDP Per Capita'},
yaxis={'title': 'Life Expectancy'},
margin={'l': 40, 'b': 40, 't': 10, 'r': 10},
legend={'x': 0, 'y': 1},
hovermode='closest'
)
}
)
])
if __name__ == '__main__':
app.run_server()
La salida del código anterior es la siguiente:
Estos gráficos son interactivos y receptivos. Puede pasar el cursor sobre los puntos para ver sus valores, hacer clic en los elementos de la leyenda para alternar los trazos, hacer clic y arrastrar para ampliar, mantener presionada la tecla Mayús y hacer clic y arrastrar para desplazarse.
Reducción
Si bien dash expone los tipos de HTML a través de la biblioteca dash_html_components, puede resultar tedioso escribir su copia en HTML. Para escribir bloques de texto, puede utilizar el componente Markdown en la biblioteca dash_core_components.
Componentes principales
Dash_core_components incluye un conjunto de componentes de nivel superior como menús desplegables, gráficos, rebajas, bloques y muchos más.
Como todos los demás componentes de Dash, se describen de forma totalmente declarativa. Todas las opciones configurables están disponibles como un argumento de palabra clave del componente.
A continuación se muestra el ejemplo, utilizando algunos de los componentes disponibles:
# -*- coding: utf-8 -*-
import dash
import dash_core_components as dcc
import dash_html_components as html
app = dash.Dash()
app.layout = html.Div([
html.Label('Dropdown'),
dcc.Dropdown(
options=[
{'label': 'New York City', 'value': 'NYC'},
{'label': u'Montréal', 'value': 'MTL'},
{'label': 'San Francisco', 'value': 'SF'}
],
value='MTL'
),
html.Label('Multi-Select Dropdown'),
dcc.Dropdown(
options=[
{'label': 'New York City', 'value': 'NYC'},
{'label': u'Montréal', 'value': 'MTL'},
{'label': 'San Francisco', 'value': 'SF'}
],
value=['MTL', 'SF'],
multi=True
),
html.Label('Radio Items'),
dcc.RadioItems(
options=[
{'label': 'New York City', 'value': 'NYC'},
{'label': u'Montréal', 'value': 'MTL'},
{'label': 'San Francisco', 'value': 'SF'}
],
value='MTL'
),
html.Label('Checkboxes'),
dcc.Checklist(
options=[
{'label': 'New York City', 'value': 'NYC'},
{'label': u'Montréal', 'value': 'MTL'},
{'label': 'San Francisco', 'value': 'SF'}
],
values=['MTL', 'SF']
),
html.Label('Text Input'),
dcc.Input(value='MTL', type='text'),
html.Label('Slider'),
dcc.Slider(
min=0,
max=9,
marks={i: 'Label {}'.format(i) if i == 1 else str(i) for i in range(1, 6)},
value=5,
),
], style={'columnCount': 2})
if __name__ == '__main__':
app.run_server(debug=True)
La salida del programa anterior es la siguiente:
Llamar a ayuda
Los componentes de Dash son declarativos. Cada aspecto configurable de estos componentes se establece durante la instalación como un argumento de palabra clave. Puede llamar a la ayuda en su consola de Python sobre cualquiera de los componentes para obtener más información sobre un componente y sus argumentos disponibles. Algunos de ellos se dan a continuación:
>>> help(dcc.Dropdown)
Help on class Dropdown in module builtins:
class Dropdown(dash.development.base_component.Component)
| A Dropdown component.
| Dropdown is an interactive dropdown element for selecting one or more
| items.
| The values and labels of the dropdown items are specified in the `options`
| property and the selected item(s) are specified with the `value` property.
|
| Use a dropdown when you have many options (more than 5) or when you are
| constrained for space. Otherwise, you can use RadioItems or a Checklist,
| which have the benefit of showing the users all of the items at once.
|
| Keyword arguments:
| - id (string; optional)
| - options (list; optional): An array of options
| - value (string | list; optional): The value of the input. If `multi` is false (the default)
-- More --
Para resumir, el diseño de una aplicación Dash describe cómo se ve la aplicación. El diseño es un árbol jerárquico de componentes. La biblioteca dash_html_components proporciona clases para todas las etiquetas HTML y los argumentos de palabras clave, y describe los atributos HTML como style, className e id. La biblioteca dash_core_components genera componentes de nivel superior como controles y gráficos.
El mundo de los marcos web de Python ofrece muchas opciones. Algunos de los frameworks destacados a considerar son Django, Flask, Bottle, Diesel, Web2py, Pyramid, Falcon, Pecan, etc., que compiten por la mente compartida de los desarrolladores. Los marcos como Pyramid, Django, Web2py y Flask son ideales con su lista de pros y contras; elegir solo uno para su proyecto es una decisión difícil de tomar.
Dash está completamente diseñado para diferentes conjuntos de necesidades. Entonces, como desarrollador, desea reducir las legiones de opciones a la que lo ayudará a terminar su proyecto a tiempo y con perfección.
Si comparamos los frameworks Flask, Pyramid y Django, Flask es un micro-framework dirigido principalmente a aplicaciones pequeñas con requisitos más simples, mientras que Pyramid y Django están dirigidos a aplicaciones más grandes. Pyramid se construye teniendo en cuenta la flexibilidad y la libertad, por lo que el desarrollador tiene las herramientas adecuadas para el proyecto. En caso de pirámide, el desarrollador es libre de elegir la base de datos, la estructura de la URL, el estilo de la plantilla y más. Sin embargo, Django incluye todas las baterías que necesita una aplicación web, por lo que solo necesitamos instalar Django y empezar a trabajar.
Django viene con un ORM, mientras que Pyramid y Flask dejan que el desarrollador elija cómo (o si) quieren que se almacenen sus datos. Generalmente, el ORM más común para aplicaciones web que no son de Django es SQLAlchemy, sin embargo, otras opciones pueden ser DjangoDB, MongoDB, LevelDB y SQLite.
Siendo desarrollador, si tengo que elegir entre Django y Web2py para mi proyecto. Necesito tener una idea de los beneficios y las limitaciones de los marcos. Así que comparemos Django y Web2py -
Django
La comunidad de Django es una gran ventaja. Esto realmente significa para un desarrollador que la riqueza de recursos será mayor. Específicamente, esto se reduce a:
- Documentation
- Recursos de código abierto
- Soporte de aplicaciones de terceros
- Soporte de implementación
- Canales de IRC con desarrolladores útiles
Django tiene una gran comunidad de equipo de desarrollo y documentación. Es el marco adecuado cuando se trata de escribir un backend complejo, ya que proporciona muchas aplicaciones de terceros que le permiten automatizar cosas como la lógica del usuario (registro, autenticación), tareas asincrónicas, creación de API, blogs, etc.
Web2py
Web2py es una buena opción para el desarrollo rápido de aplicaciones web simples o servidores http. A continuación se presentan algunos de los beneficios y limitaciones de web2py.
Beneficios de Web2py
Los siguientes son algunos de los beneficios del marco Web2py:
Web2py es un marco potencial en comparación con Django y Flask en términos de velocidad y simplicidad de desarrollo. Como Web2py usa un lenguaje de plantilla basado en Python, esto permite a los desarrolladores de Python comenzar a escribir código inmediatamente después de comprender los conceptos básicos de cómo escribir una plantilla como vistas.
Web2py puede ejecutar código compilado en Python como una optimización para reducir el tiempo de ejecución y permitirle distribuir su código de forma compilada.
Limitaciones de Web2py
Las siguientes son algunas de las limitaciones del marco:
Web2py admite pruebas de documentación, sin embargo, no admite pruebas unitarias. Ahora, las pruebas de documentación no son la opción óptima debido a su alcance limitado.
No hay diferenciación entre modo de producción y desarrollo. En caso de que ocurriera una excepción, el ticket se genera todas las veces y tendrá que navegar hasta el ticket para verificar el error. Esto podría ser útil en el caso de un servidor de producción, pero será difícil en un entorno de desarrollo, ya que los desarrolladores realmente necesitan ver el error al instante en lugar de verificar el número de ticket.
Web2py tiene una buena capa de abstracción de base de datos (DAL) que le permite abstraer muchos tipos de motores de base de datos, pero carece de un ORM potente. En caso de que esté tratando con un modelo relativamente grande, su código se dispersará por todas las definiciones y atributos anidados, lo que complica las cosas.
No podemos usar herramientas de desarrollo de Python estándar sin modificaciones, ya que web2py tiene un soporte IDE realmente deficiente.
El marco Django y Web2py son marcos de pila completa. Esto significa que proporcionan todo el código necesario, desde generadores de formularios hasta diseños de plantillas y validación de formularios, y le permiten escribir cosas de acuerdo con sus necesidades específicas.
Sin embargo, con los marcos que no son de pila como Flask y Pyramid, si desea crear un sitio web con todas las funciones, deberá agregar mucho código y bits adicionales usted mismo. Esto requiere mucha habilidad y tiempo.
Guión
Dash está completamente diseñado para la tarea específica de crear un marco reactivo para paneles. Dash by Plotly es una excelente manera para que el desarrollador de Python cree aplicaciones web interactivas sin tener que aprender Javascript y desarrollo web front-end. Dash está construido sobre Flask, Plotly.js, React y React Js.
No hay comparación entre Dash y otros marcos (mencionados anteriormente) ya que pertenecen a diferentes categorías de marcos. A continuación se presentan algunas de las razones para preferir el tablero sobre otros marcos de tablero interactivos (Tableros de Jupiter, matplotlib y otros):
Con solo 50 líneas de código, puede escribir una aplicación Dash simple de "hola mundo", ya que Dash requiere muy poco texto repetitivo.
Las aplicaciones completas de Dash están escritas en lenguaje Python, el idioma más preferido a nivel mundial.
En su propio código de Python, puede vincular componentes interactivos del tablero como menús desplegables, entradas de texto, controles deslizantes y gráficos con "devoluciones de llamada" reactivas de Dash.
Las IU complicadas en las aplicaciones Dash pueden tener múltiples entradas, múltiples salidas y entradas que dependen de otras entradas.
Al mismo tiempo, varios usuarios pueden trabajar en las aplicaciones Dash.
Para crear sus propios componentes de Dash con React, dash usa React.js para renderizar componentes e incluye un sistema de complementos.
Los desarrolladores o escritores pueden escribir aplicaciones de tablero que respondan al hacer clic, pasar el cursor o seleccionar puntos en el gráfico, ya que los componentes del gráfico de Dash son interactivos.
Conclusión
Podemos concluir que elegir el marco correcto entre muchos marcos de Python disponibles depende únicamente del tipo de proyecto, complejidad, proyecto de nivel pequeño o empresarial, tipo de soporte comunitario disponible o recurso en línea disponible, escalabilidad, seguridad, etc.
Los marcos de Python mencionados anteriormente son los mejores en su clase, pero tienen sus propios beneficios e inconvenientes (según los requisitos del proyecto). Por lo tanto, un tipo de marco no es adecuado para todo tipo de proyectos.