Una breve mirada al desarrollo web en Python

    Introducci贸n

    Desde 2003, Python se ha clasificado entre los 10 principales lenguajes de programaci贸n para aprender y su clasificaci贸n ha mejorado constantemente desde entonces. De acuerdo a una estad铆stica, Python es uno de los 5 principales lenguajes para aprender en 2019 y se ha convertido en una parte esencial de la comunidad de programaci贸n, gracias a su simplicidad, flexibilidad, robustez, facilidad de uso, compatibilidad, velocidad y versatilidad. Adem谩s, gigantes tecnol贸gicos como Instagram, Spotify y Google basan, al menos en parte, su arquitectura en Python.

    En resumen, Python se ha convertido en una figura central del mundo de la programaci贸n y los negocios con el surgimiento de Silicon Valley y Wall Street poster child: Fintech. los las razones son muchas, pero Python ofrece la seguridad y escalabilidad buscadas por la tendencia de enfoque digital primero asumida por una parte considerable de los sectores empresarial y financiero.

    Aunque Python se puede usar para realizar una variedad de tareas que van desde el Machine Learning y la ciencia de datos hasta la rob贸tica y la programaci贸n de hardware, en este art铆culo estudiaremos c贸mo se puede usar Python para el desarrollo web.

    Desarrollo web con Python

    Python ofrece algo para todos a trav茅s de sus muchos marcos. Un marco es un conjunto de paquetes y m贸dulos que proporcionan una abstracci贸n o funcionalidad gen茅rica que se puede cambiar de forma selectiva para crear software espec铆fico de la aplicaci贸n.

    Pero, 驴c贸mo saber qu茅 marco web es el adecuado para usted? Para aplicaciones web completas, Django y Pir谩mide son el camino a seguir. Para un mejor control y visualizaci贸n o creaci贸n de prototipos de una aplicaci贸n, Web2py o Matraz puede tener algo que ofrecer a su proyecto. CheeryPy es imprescindible para soluciones simples y minimalistas. Tornado manejar谩 10,000 o m谩s conexiones concurrentes a su aplicaci贸n al mismo tiempo mientras Gui贸n es la elecci贸n perfecta para aplicaciones anal铆ticas.

    En este art铆culo, proporcionaremos una breve descripci贸n general de tres de las selecciones m谩s populares de desarrolladores y empresas de programaci贸n por igual: Django, Pyramid y Flask. Despu茅s de la descripci贸n general, mostraremos el marco m谩s popular, Django, en acci贸n mediante el uso de un sistema de inicio de sesi贸n de ejemplo.

    Django

    Este marco es la encarnaci贸n de la frase “pilas incluidas”. Definido como “el framework web para perfeccionistas con plazos”. Sus caracter铆sticas integradas permiten una amplia gama de aplicaciones web como aplicaciones de bases de datos, chatbots, soluciones GPS, etc.

    Su filosof铆a DRY (Don’t Repeat Yourself) no solo permite, sino que tambi茅n promueve, la reutilizaci贸n del c贸digo, reduciendo el tiempo de codificaci贸n a la mitad. Adem谩s, su arquitectura modular / desacoplada permite una modificaci贸n perfecta de los componentes del c贸digo, lo que le permite agregar o eliminar componentes tanto como sea necesario con poco o ning煤n esfuerzo.

    Django tambi茅n posee algo llamado ORM (Object-Relational Mapping), que lo hace no solo altamente compatible con la mayor铆a de las bases de datos populares como SQL u Oracle, sino que le permite trabajar con varias bases de datos a la vez.

    Finalmente, Django es SEO (Optimizaci贸n de motores de b煤squeda) amigable. Por ejemplo, permite la reducci贸n del tiempo de carga de la p谩gina a trav茅s de t茅cnicas / caracter铆sticas como el almacenamiento en cach茅 de plantillas y la compresi贸n de JavaScript.

    Pir谩mide

    Este marco se define a s铆 mismo como “ni demasiado peque帽o, ni demasiado grande, perfecto”. Pyramid es un marco centrado en el acabado con la capacidad de comenzar con poco, lo que le permite codificar una base s贸lida para su soluci贸n y luego escalarla seg煤n sea necesario. Es similar a Django en su compatibilidad con aplicaciones grandes y peque帽as, pero se distingue de Django en su complejidad.

    Si bien por s铆 solo puede considerarse una opci贸n ajustada en comparaci贸n con otros marcos, Pyramid brilla con su sistema de plugins, lo que permite a los desarrolladores agregar lo que sea necesario, lo que permite la implementaci贸n de m煤ltiples soluciones para una tarea determinada.

    Pyramid es incluso ideal para aplicaciones de un solo archivo, autenticaci贸n flexible y autorizaci贸n o aplicaciones orientadas a ver predicados.

    Matraz

    Mientras que Pyramid y Django comparten la misma filosof铆a central, Flask va en la otra direcci贸n. Si el objetivo final es algo simple, manejable y personalizable, le sugiero que siempre use Flask en lugar de usar un caballo de fuerza excesivo como Django. Matraz se basa en gran medida en Plantillas Jinja 2 y el Werkzeug Kit de herramientas WSGI (Web Server Gateway Interface).

    Autodefinido como un microframework, Flask est谩 dise帽ado para soluciones a peque帽a escala, como aplicaciones simples o API, donde la funcionalidad esbelta es la m谩xima prioridad. Matraz es tambi茅n el microframework m谩s utilizado para crear prototipos. Al construir una aplicaci贸n funcional desde cero en un corto per铆odo de tiempo, tiene prioridad sobre la gesti贸n de dicha aplicaci贸n a largo plazo.

    Sistema de inicio de sesi贸n simple con Django

    En esta secci贸n, explicaremos c贸mo crear un sistema de inicio de sesi贸n simple con el marco de Django. Si bien muchas cosas suceden “fuera del escenario”, y muchas cosas se pueden personalizar al gusto de los desarrolladores, solo se explicar谩n los pasos m谩s b谩sicos para demostrar lo f谩cil que es desarrollar aplicaciones con el marco de Django.

    Instalaci贸n de Django

    Para este ejemplo, el PEPITA es necesario instalar el m贸dulo. Una vez hecho esto, Se puede instalar Django y se puede crear un nuevo proyecto de la siguiente manera:

    $ python3 -m venv ~/.virtualenvs/dProject # Creates a virtual enviroment named dProject
    $ source ~/.virtualenvs/dProject/bin/activate # A path is created
    (dProject) $ pip install django # Django is installed
    (dProject) $ django-admin.py startproject LoginProject_D # The project is created with the name LoginProject_D 
    (dProject) $ ./manage.py migrate # Migrate creates a new SQLite database
    (dProject) $ ./manage.py runserver # Calls the local server
    (dProject) $ ./manage.py startapp dProject # This creates a dedicated app that will allow the making of a view and url registration.
    

    Una vez hecho esto, se puede obtener una vista previa del proyecto en un navegador mediante el “http://127.0.0.1:8000“direcci贸n. La pantalla de bienvenida de Django se cargar谩 en el navegador, lo que indica que la instalaci贸n fue un 茅xito.

    Aplicaci贸n de autenticaci贸n de Django

    Cuando se crea un proyecto, Django instala la aplicaci贸n “auth” de forma predeterminada. Esto se puede confirmar revisando el archivo “settings.py”, que se crea autom谩ticamente con el nuevo proyecto, en la secci贸n “INSTALLED_APPS” de la siguiente manera:

    INSTALLED_APPS = [
        鈥
        'django.contrib.admin',
        'django.contrib.auth', # Here it is! Note that several built-in apps are included in this section.
       鈥
    ]
    

    “Django-auth”, o “django.contrib.auth”, es el marco de Django sistema de autenticaci贸n incorporadoy contiene sus modelos predeterminados.

    Para usar la aplicaci贸n “auth”, debemos agregarla al archivo de nivel de proyecto “urls.py”:

    # Importing this module will allow us to set the routes login and logout views
    from django.conf.urls import url
    from django.contrib import admin
    from django.contrib.auth import views as auth_views 
    
    # This section adds Django site authentication urls (for login, logout, password management)
    urlpatterns = [
        url(r'^login/$', auth_views.login, name="login"),
        url(r'^logout/$', auth_views.logout, name="logout"),
        url(r'^admin/', admin.site.urls),
        path('dProject/', include('django.contrib.auth.urls')),
    ]
    

    La aplicaci贸n “auth” nos proporciona las siguientes URL, cada una asociada con las vistas “auth”, lo que nos permite usarlas simplemente creando sus plantillas de vista:

    dProject/login/ [name="login"]
    dProject/logout/ [name="logout"]
    dProject/password_change/ [name="password_change"]
    dProject/password_change/done/ [name="password_change_done"]
    dProject/password_reset/ [name="password_reset"]
    dProject/password_reset/done/ [name="password_reset_done"]
    dProject/reset/<uidb64>/<token>/ [name="password_reset_confirm"]
    dProject/reset/done/ [name="password_reset_complete"]
    

    los django.contrib.auth.views.login view crear谩 la plantilla “registration / login.html” de forma predeterminada. Esto crea una carpeta llamada REGISTRO con una plantilla “login.html” dentro. El siguiente bloque de c贸digo es una plantilla de inicio de sesi贸n b谩sica que se puede utilizar:

    {% extends 'base.html' %}
    
    {% block title %}Login{% endblock %}
    
    {% block content %}
      <h2>Login</h2>
      <form method="post"> #This is a standard form to send data.
        {% csrf_token %} #Security tag to prevent <a target="_blank" href="https://www.owasp.org/index.php/Cross-site_Scripting_(XSS)">XSS Attacks</a>, among other concerns.
        {{ form.as_p }} #Ouputs the form's contents between paragraph tags.
        <button type="submit">Login</button> #A submit button. 
      </form>
    {% endblock %}
    

    Finalmente, configuramos el proyecto para que busque la carpeta “templates” a trav茅s del archivo “settings.py”, actualizando DIRS:

    TEMPLATES = [
        {
            ...
            'DIRS': [os.path.join(BASE_DIR, 'templates')],
            ...
        },
    ]
    

    隆Voila! Una p谩gina de inicio de sesi贸n simple que puede autenticar correctamente a un usuario a trav茅s de una validaci贸n de nombre de usuario y contrase帽a.

    Conclusi贸n

    Python se ha utilizado ampliamente para la programaci贸n del lado del servidor, debido a sus capacidades din谩micas de creaci贸n de sitios web. Este lenguaje es ampliamente utilizado para la creaci贸n r谩pida de prototipos y la construcci贸n de aplicaciones web altamente escalables por l铆deres tecnol贸gicos como Google e incluso la NASA.

    Python es, sin lugar a dudas, imprescindible cuando se adopta un enfoque digital primero para mantenerse competitivo, que se ve reforzado por el ascenso mete贸rico de la industria fintech.

    Adem谩s, estos frameworks de Python reducen el esfuerzo de desarrollo mediante la provisi贸n de una variedad de funcionalidades integradas. El 煤nico desaf铆o ser铆a cu谩l usar, adaptado a las necesidades espec铆ficas para obtener mejores resultados.

     

    Etiquetas:

    Deja una respuesta

    Tu direcci贸n de correo electr贸nico no ser谩 publicada. Los campos obligatorios est谩n marcados con *