Advertisement
teslariu

servidor con form

Sep 13th, 2023
1,328
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.33 KB | None | 0 0
  1. #!/usr/bin/env python
  2. # -*- coding: utf-8 -*-
  3. #
  4. from flask import Flask, jsonify, request
  5.  
  6. app = Flask(__name__)
  7.  
  8. """
  9. alumnos = [
  10.      {"id":1, "nombre":"Juan", "cursos":4};
  11.      {"id":2, "nombre":"Ana", "cursos":1};
  12. ]
  13.  
  14. """
  15. alumnos = []
  16.  
  17. # creo el codigo HTML del formulario
  18. formulario_html = """
  19. <!DOCTYPE html>
  20. <body>
  21.     <form method="POST">
  22.     Nombre:<br><input type="text" name="nombre"><br>
  23.     Cursos:<br><input type="number" name="cursos"><br>
  24.     <br><br>
  25.     <input type="submit" value="Enviar">
  26.     </form>
  27. </body>
  28. </html>
  29. """
  30. def salida_html(mensaje):
  31.     return f"""
  32.     <html>
  33.         <head>
  34.             <meta http-equiv="refresh" content="3"; URL="http://localhost:5000/form">
  35.         </head>
  36.         <body>{mensaje}</body>
  37.     </html>
  38.     """
  39.  
  40.  
  41.  
  42.  
  43.  
  44.  
  45.  
  46. @app.route("/")
  47. def home():
  48.     return "<em>Hola</em> a <strong>todos</strong>"
  49.    
  50. @app.route("/admin")
  51. def admin():
  52.     return "<h2>En construcción...</h2>"
  53.    
  54.    
  55. @app.route("/alumnos", methods=['GET','POST','PUT','DELETE'])
  56. def get_alumnos():
  57.    
  58.     if request.method == "GET":
  59.         return jsonify({"alumnos":alumnos})
  60.    
  61.        
  62.     elif request.method == "POST":
  63.         if not alumnos:
  64.             id_alumno = 1
  65.         else:
  66.             id_alumno = alumnos[-1]['id'] + 1
  67.        
  68.         alumno = {
  69.             'id':id_alumno,
  70.             'nombre': request.json['nombre'],
  71.             'cursos': request.json['cursos']
  72.         }
  73.         alumnos.append(alumno)
  74.         return jsonify("Alumno añadido")
  75.        
  76.    
  77.     elif request.method == "PUT":
  78.         id_alumno = request.json['id']
  79.         for alumno in alumnos:
  80.             if id_alumno ==  alumno.get('id'):
  81.                 if request.json['nombre'] is not None:
  82.                     alumno['nombre'] = request.json['nombre']
  83.                 if request.json['cursos'] is not None:
  84.                     alumno['cursos'] = request.json['cursos']
  85.                 return jsonify("Datos modificados")
  86.         return jsonify(f"Alumno con id={id_alumno} no encontrado")
  87.        
  88.        
  89.     elif request.method == "DELETE":
  90.         id_alumno = request.json['id']
  91.         for alumno in alumnos:
  92.             if id_alumno ==  alumno.get('id'):
  93.                 alumnos.remove(alumno)
  94.                 return jsonify("Alumno borrado")
  95.         return jsonify(f"Alumno con id={id_alumno} no encontrado")
  96.                
  97.    
  98. @app.route('/alumnos/<int:i>')
  99. def ver_alumno(i):
  100.     try:
  101.         return jsonify({"alumno":alumnos[i-1]})
  102.     except IndexError:
  103.         return jsonify(f"Alumno id={i} no hallado")
  104.  
  105.  
  106. @app.route('/form', methods=["GET","POST"])
  107. def formulario():
  108.     if request.method == "GET":
  109.         return formulario_html.encode('utf-8')
  110.    
  111.     elif request.method == "POST":
  112.         try:
  113.             ctx = dict(request.form)
  114.         except Exception:
  115.             pass
  116.         else:
  117.             if ctx['nombre'] and ctx['cursos']:
  118.                 if not alumnos:
  119.                     id_alumno = 1
  120.                 else:
  121.                     id_alumno = alumnos[-1]['id'] + 1
  122.                 print(f"""
  123.                 Datos del alumno añadido:
  124.                 -------------------------
  125.                 ID: {id_alumno}
  126.                 Nombre: {ctx['nombre']}
  127.                 Cursos; {ctx['cursos']}
  128.                 -------------------------
  129.                 """)
  130.  
  131.                 # guardo los datos
  132.                 alumno = {
  133.                     "id": id_alumno,
  134.                     "nombre": ctx['nombre'],
  135.                     "cursos": ctx['cursos']
  136.                 }
  137.                 alumnos.append(alumno)
  138.                
  139.                 mensaje = "Datos almacenados correctamente"
  140.             else:
  141.                 mensaje ="Datos incompletos"
  142.        
  143.         return salida_html(mensaje).encode('utf-8')
  144.     return salida_html("ERROR: solo se aceptan requests GET o POST").encode('utf-8')   
  145.    
  146.    
  147.    
  148. if __name__ == "__main__":
  149.     app.run(debug=True)
  150.    
  151. # LINUX
  152. # export FLASK_APP=runserver.py
  153. # flask run
  154.  
  155. # WINDOWS
  156. # set FLASK_APP=runserver.py
  157. # flask run
  158.  
  159.  
  160.  
  161.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement