El blog de cubells

Frameworks de Python

Segur que coneixeu frameworks de Python. Són entorns de treball que ens permeten crear aplicacions web fàcilment.

Els més coneguts són Django i Flask, dels quals ja he parlat en aquest blog. Però hi ha més.

He volgut fer una comparativa dels principals. I la millor que he trobat és crear una simple pàgina web amb els distints frameworks, perquè comproveu com ho fa cadascú. Ja faré un comparativa de les funcionalitats de cadascun en un altre article.

Les comandes que voreu, no tenen explicació. Però són reals. Són les comandes mínimes que es necessiten per a crear una pàgina web i servir el contingut en un sistema mínim. Reconec que pot ser avorrit seguir llegint a partir d'ací. :D

Comencem, per el més conegut, i el que més m'agrada: Django. El que faríem seria quelcom així:

# apt-get update
# apt-get install python-pip curl nano
# cd /tmp
# python -m pip install "django<2"
# django-admin.py startproject el_meu_projecte
# cd el_meu_projecte
# python manage.py migrate
# django-admin startapp HolaMon
# nano el_meu_projecte/settings.py

Editaríem el fitxer el_meu_projecte/settings.py i afegiríem HolaMon a les aplicacions instal·lades:

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

Editaríem el fitxer dels urls i ho deixaríem, per exemple, així:

# nano el_meu_projecte/urls.py


from django.conf.urls import url
from django.contrib import admin
from HolaMon.views import inici

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'', inici),
]

Editaríem les vistes i deixaríem el fitxer HolaMon/views.py així:

# nano HolaMon/views.py

# -*- coding: utf-8 -*-
from django.http import HttpResponse

def inici(request):
    return HttpResponse("La carxofa nutritiva\n\n")

I finalment llançaríem el servidor:

# python manage.py runserver 80 &
# curl localhost
La carxofa nutritiva

[16/Apr/2018 21:12:02] "GET / HTTP/1.1" 200 22

Perfecte.

El segon framework, és Flask. Com faríem el mateix? Un poc més senzill:

# apt-get update
# apt-get install python-pip curl nano
# cd /tmp
# pip install Flask
# nano hola_mon.py

Crearíem el fitxer hola_mon.py així:

from flask import Flask
app = Flask(__name__)

@app.route("/")
def hola():
    return "La carxofa nutritiva\n\n"

if __name__ == "__main__":
    app.run(host='0.0.0.0', port=80)

I llançaríem el servidor:

# python hola_mon.py &
# curl localhost
127.0.0.1 - - [16/Apr/2018 21:18:44] "GET / HTTP/1.1" 200 -
La carxofa nutritiva

Més senzill no?

El tercer framework és Piramid. Ho faríem així, molt similar ja a Flask:

# apt-get update
# apt-get install python-pip curl nano
# cd /tmp
# pip install pyramid
# nano hola_mon.py

El fitxer hola_mon.py quedaria així:

from wsgiref.simple_server import make_server
from pyramid.config import Configurator
from pyramid.response import Response

def hola_mon(request):
    return Response('La carxofa nutritiva\n\n')

if __name__ == '__main__':
    with Configurator() as config:
        config.add_route('hola', '/')
        config.add_view(hola_mon, route_name='hola')
        app = config.make_wsgi_app()
    server = make_server('0.0.0.0', 80, app)
    server.serve_forever()

I ja serviríem la pàgina web amb:

# python hola_mon.py  &
# curl localhost
La carxofa nutritiva

127.0.0.1 - - [16/Apr/2018 21:27:42] "GET / HTTP/1.1" 200 22

Una mica diferent.

El quart entorn de treball seria Cherrypy, el que utilitzava Openerp en les seues primeres versions. Quins recors! Ho faríem així:

# apt-get update
# apt-get install python-pip curl nano
# cd /tmp
# pip install cherrypy
# nano hola_mon.py

El fitxer hola_mon.py seria aquest:

import cherrypy

class HolaMon(object):
    @cherrypy.expose
    def index(self):
        return "La carxofa nutritiva\n\n"
    
    cherrypy.config.update({
        'server.socket_host': '127.0.0.1',
        'server.socket_port': 80,
   }) 

cherrypy.quickstart(HolaMon())

I llançaríem el servidor amb:

# python hola_mon.py &
# curl localhost
127.0.0.1 - - [16/Apr/2018:21:39:57] "GET / HTTP/1.1" 200 22 "" "curl/7.47.0"
La carxofa nutritiva

I finalment, el darrer framwork de qual vull parlar és TurboGears. Ho faríem de manera similar:

# apt-get update
# apt-get install python-pip curl nano
# cd /tmp
# pip install TurboGears2
# nano hola_mon.py

El fitxer hola_mon.py es podria quedar així:

from wsgiref.simple_server import make_server
from tg import expose, TGController, AppConfig

class RootController(TGController):
    @expose()
    def index(self):
        return "La carxofa nutritiva\n\n"

config = AppConfig(minimal=True, root_controller=RootController())

httpd = make_server('', 80, config.make_wsgi_app())
httpd.serve_forever()

I ja podríem servir la pàgina web:

# python hola_mon.py &
# curl localhost
La carxofa nutritiva

127.0.0.1 - - [16/Apr/2018 21:45:15] "GET / HTTP/1.1" 200 22

Com veieu, excepte el primer, que és una mica més complexe de fer anar, la resta són molt similars, i solament canvia com es criden les funcions i les llibreries per iniciar el servidor.

L'important és que teniu un munt d'eines on triar. Solament heu de triar aquella que més us agrade. I tindreu una pàgina web en 5 minuts. :)

Ja parlaré de les característiques d'ells en un altre article.

Sense comentaris encara. Comenta ara