Flask i Django

ChatGPT ha dit:

Flask i Django són dos dels frameworks més populars per al desenvolupament web en Python. A continuació, te’n faig una comparació detallada per ajudar-te a triar el que millor s’adapti al teu projecte:


1. Arquitectura

  • Flask:
    • És un microframework minimalista i lleuger.
    • Et dona el control total sobre les eines i extensions que vols afegir al teu projecte.
    • Ideal si vols començar amb una base petita i afegir funcionalitats a mesura que el projecte creix.
  • Django:
    • És un framework complet (bateries incloses).
    • Ve amb moltes funcionalitats preconfigurades com autenticació, ORM, panell d’administració, entre altres.
    • Ideal per a aplicacions grans i complexes.

2. Filosofia

  • Flask:
    • Filosofia “do-it-yourself” (fes-t’ho tu mateix).
    • És flexible i et permet estructurar el projecte segons les teves necessitats.
    • Requereix més treball manual per configurar i afegir funcionalitats.
  • Django:
    • Filosofia “convention over configuration” (convenis per sobre de configuracions).
    • Té una estructura d’aplicació clara i definida.
    • És menys flexible, però redueix la corba d’aprenentatge per a tasques estàndard.

3. Característiques

  • Flask:
    • Lleuger i ràpid.
    • Basat en Werkzeug i Jinja2.
    • No ve amb eines integrades com un ORM (cal utilitzar SQLAlchemy o similars).
    • Admet websockets i aplicacions asíncrones amb una configuració senzilla.
  • Django:
    • Ve amb tot integrat: ORM (basat en models), autenticació d’usuaris, panell d’administració, suport per a REST API, etc.
    • Major suport per a projectes grans amb moltes dependències.

4. Escalabilitat

  • Flask:
    • Més fàcil d’escalar perquè pots afegir exactament el que necessites.
    • Millor per a aplicacions petites i serveis tipus microserveis.
  • Django:
    • Ideal per a aplicacions grans que necessiten una estructura definida des del principi.
    • Inclou suport per a múltiples bases de dades, sistemes de cache, etc.

5. Comunitat i extensions

  • Flask:
    • Moltes extensions disponibles, però cal més personalització.
    • La comunitat és gran, però lleugerament més petita que la de Django.
  • Django:
    • Una de les comunitats més grans en el món Python.
    • Ofereix molts paquets i solucions preconstruïdes.

Quan utilitzar Flask?

  • Si el projecte és petit o mitjà.
  • Si prefereixes tenir control sobre cada component.
  • Si vols desenvolupar una API o un servei tipus microservei.

Quan utilitzar Django?

  • Si el projecte és gran o complex.
  • Si vols desenvolupar aplicacions ràpidament amb eines preconfigurades.
  • Si necessites una aplicació amb funcions com autenticació, gestió de bases de dades, etc.

En resum:

  • Flask és com un bloc de notes: lliure, flexible i minimalista.
  • Django és com un sistema de gestió complet: tot el que necessites està llest des del principi.

Quin triar depèn del projecte i del teu estil de treball! 🙂

4o

O

C

Calculadora amb Python, Flask, JavaScript, HTML

Arbre del projecte

Insta-la Python a Windows

Python no apareix a l’arbre del projecte perquè es pressuposa que ja està instal·lat prèviament al sistema operatiu. L’arbre del projecte només mostra els fitxers i directoris específics del teu projecte. Aquí tens l’arbre del projecte sense Python:

Ara hem d’instal·lar Flask al directori env (entorn virtual)

python -m venv env (crea un entorn virtual)
.\env\Scripts\activate (Activa l'entorn vritual)
pip install flask (instal·la Flask dintre del entorn-> dependencies aillades)
ARBRE1: Es llança l'escript obrint calculadora.html amb el navegador 

C:\Users\urqte\Desktop\calculadora
├── app.py
├── calculadora_html.py
├── env
├── estructura.txt
├── 
└── templates
    └── calculadora.html

index.html= calculadora.html, es canvia el nom per a que funcioni a l'arbre 2
Funciona indistintament també a:

ARBRE2: Es llança l'escript amb el navegador a l'adreça: https://beseit.net/calculadora/
S: es una unitat de xarxa de Synology que coinsideix amb el www del Synology,


S:\beseit\calculadora>
├── app.py
├── calculadora_html.py
├── calculadora.ico
├── env
├── estructura.txt
├── index.htm
└── templates
    └── 

Explicació del projecte

  1. app.py: Aquest fitxer conté el codi per al servidor Flask que gestiona les sol·licituds del formulari HTML i retorna el resultat de la calculadora.
from flask import Flask, render_template, request  # Importa les classes i funcions necessàries de Flask

app = Flask(__name__)  # Crea una instància de l'aplicació Flask

def suma(a, b):  # Defineix una funció per sumar dos números
    return a + b

def resta(a, b):  # Defineix una funció per restar dos números
    return a - b

def multiplica(a, b):  # Defineix una funció per multiplicar dos números
    return a * b

def divideix(a, b):  # Defineix una funció per dividir dos números
    if b != 0:  # Comprova que el divisor no sigui zero
        return a / b
    else:  # Si el divisor és zero, retorna un missatge d'error
        return "No es pot dividir per zero"

@app.route('/')  # Defineix la ruta per a la pàgina principal
def index():  # Defineix la funció que es crida quan es visita la pàgina principal
    return render_template('calculadora.html')  # Renderitza el fitxer HTML 'calculadora.html'

@app.route('/resultat', methods=['POST'])  # Defineix la ruta per a la pàgina de resultats, només accepta sol·licituds POST
def resultat():  # Defineix la funció que es crida quan es visita la pàgina de resultats
    operacio = request.form['operacio']  # Obté l'operació seleccionada del formulari
    num1 = float(request.form['num1'])  # Obté el primer número del formulari i el converteix a float
    num2 = float(request.form['num2'])  # Obté el segon número del formulari i el converteix a float

    if operacio == '1':  # Si l'operació és '1', suma els dos números
        resultat = suma(num1, num2)
    elif operacio == '2':  # Si l'operació és '2', resta els dos números
        resultat = resta(num1, num2)
    elif operacio == '3':  # Si l'operació és '3', multiplica els dos números
        resultat = multiplica(num1, num2)
    elif operacio == '4':  # Si l'operació és '4', divideix els dos números
        resultat = divideix(num1, num2)
    else:  # Si l'operació no és vàlida, retorna un missatge d'error
        resultat = "Elecció invàlida"

    return render_template('resultat.html', resultat=resultat)  # Renderitza el fitxer HTML 'resultat.html' amb el resultat

if __name__ == '__main__':  # Si aquest fitxer es crida directament, executa l'aplicació Flask
    app.run(debug=True)  # Executa l'aplicació en mode de depuració
  1. calculadora.py: Aquest fitxer conté la lògica de la calculadora, com ara les funcions per sumar, restar, multiplicar i dividir.
  2. calculadora_html.py: Aquest fitxer genera el fitxer HTML que s’obre amb el navegador. Potser conté codi per crear la interfície d’usuari de la calculadora.
  3. env/: Aquest directori conté l’entorn virtual de Python, que inclou totes les dependències necessàries per executar el projecte.
  4. estructura.txt: Aquest fitxer probablement conté informació sobre l’estructura del projecte o instruccions per a l’ús del projecte.
  5. templates/: Aquest directori conté els fitxers HTML. En aquest cas, conté el fitxer calculadora.html, que és la interfície d’usuari de la calculadora. Un cop finalitzat el projecte aquest directori es pot suprimir.

Funcionament del projecte

  1. Formulari HTML: El fitxer calculadora.html conté un formulari que permet als usuaris introduir números i seleccionar una operació. Quan l’usuari envia el formulari, les dades es passen al servidor Flask.
  2. Servidor Flask: El fitxer app.py conté el codi per al servidor Flask. Aquest servidor gestiona les sol·licituds del formulari HTML i crida les funcions de la calculadora per calcular el resultat.
  3. Lògica de la calculadora: El fitxer calculadora.py conté les funcions per sumar, restar, multiplicar i dividir. Aquestes funcions es criden des del servidor Flask per calcular el resultat.
  4. Resultat: El servidor Flask retorna el resultat de la calculadora al navegador web, on es mostra a l’usuari.

Servidor Django

Django (entre altres coses) permet fer un servidor virtual a http://127.0.0.1:8000/,

Sí, correctament! Django té un servidor de desenvolupament integrat que és molt útil per provar aplicacions mentre estàs treballant en elles.

Quan crees un projecte Django, pots utilitzar aquest servidor de desenvolupament local per veure la teva aplicació en acció al navegador. Per fer-ho:


Pasos per arrencar el servidor Django local

  1. Assegura’t que tens Django instal·lat. Pots comprovar-ho executant (al shell per exemple)
python -m django --version

Si django no està instal·lat en aquest directori, es pot instal·lar amb

pip install django
  1. Si Django està instal·lat, accedeix al directori cd el_meu_projecte i instal·la Python amb:
python manage.py runserver

Per defecte, el servidor s’executarà a http://127.0.0.1:8000/. Obre aquest URL al navegador per veure la teva aplicació.


Característiques del servidor de desenvolupament

  • Servei local: Només està pensat per a desenvolupament, no per a producció.
  • Autorecàrrega: Detecta automàticament canvis al codi i reinicia el servidor.
  • Error detallat: Mostra traçats complets i detalls dels errors al navegador.

Canviar el port o adreça

  • Si vols utilitzar un port diferent (per exemple, 8080)
python manage.py runserver 8080
  • O canviar l’adreça IP per fer-lo accessible a altres dispositius de la xarxa:
python manage.py runserver 8080

Django “Hola, món”

em podries posar un example sencill?

Per descomptat! Aquí tens un exemple senzill de com pots crear una aplicació Django que mostra una pàgina web amb un missatge “Hola, món!”:

  1. Crear un nou projecte Django: Obre el terminal i navega a la carpeta on vols crear el projecte. Després, executa:bashdjango-admin startproject hello_world_project cd hello_world_project
  2. Crear una nova aplicació dins del projecte: Encara dins del terminal, executa:bashpython manage.py startapp hello
  3. Afegir l’aplicació al projecte: Obre el fitxer settings.py dins de la carpeta hello_world_project i afegeix 'hello' a la llista INSTALLED_APPS:pythonINSTALLED_APPS = [ ... 'hello', ]
  4. Crear una vista per a l’aplicació: Obre el fitxer views.py dins de la carpeta hello i afegeix la següent funció:pythonfrom django.http import HttpResponse def hola_mon(request): return HttpResponse("Hola, món!")
  5. Configurar les URL: Crea un nou fitxer anomenat urls.py dins de la carpeta hello i afegeix el següent codi:pythonfrom django.urls import path from . import views urlpatterns = [ path('', views.hola_mon, name='hola_mon'), ] Després, edita el fitxer urls.py dins de la carpeta hello_world_project per incloure les URL de l’aplicació hello:pythonfrom django.contrib import admin from django.urls import include, path urlpatterns = [ path('admin/', admin.site.urls), path('', include('hello.urls')), ]
  6. Executar el servidor de desenvolupament: Al terminal, assegura’t que estàs dins la carpeta hello_world_project i executa:bashpython manage.py runserver

Ara, obre un navegador web i ves a http://localhost:8000/. Hauries de veure la pàgina amb el missatge “Hola, món!”.

Aquest és un exemple bàsic per començar a treballar amb Django i veure com pots crear una pàgina web senzilla. Si tens alguna altra pregunta o necessites més ajuda, estic aquí per ajudar-te!