Laboratorio 9: Formulario de Empleados

Objetivos

Durante esta práctica, los alumnos serán capaces de:

Esta actividad promueve las siguientes habilidades, valores y actitudes: análisis y síntesis, capacidad de resolver problemas, creatividad, y uso eficiente de la informática y las telecomunicaciones.

Descripción

Esta práctica puede ser elaborada de manera individual o en parejas.

El material aquí cubierto asume que ya se leyó el capítulo 7 de [HOLOVATY].

  1. Crea un nuevo proyecto de Django llamado empleados. Realiza las configuraciones necesarias. Nota: Este proyecto no tiene ninguna interacción con una base de datos.
  2. Crea un archivo forms.py y escribe en él una nueva clase formulario llamada EmpleadoForm que tenga los siguientes campos: nombre (CharField), dirección (CharField con un widget de área de texto), fecha de nacimiento (DateField) y salario (IntegerField).
  3. En la vista views.py, añade una función que verifique lo siguiente:

    1. Si el método de la petición es GET se debe ir a una plantilla donde se despliegue el formulario en el que se pidan todos los datos del empleado (usando {{ form.as_table }}).
    2. Si el método de la petición es POST se deben validar los campos (usando la función is_valid), en caso de haber algún error se debe re-desplegar la plantilla de captura (la del inciso anterior), de otra forma se debe ir a una nueva plantilla que diga "Todo en Orden" y que despliegue la información capturada.
  4. Agrega a la clase EmpleadoForm una validación al salario: si el salario es menos de 2000, debe arrojar un ValidationError con el mensaje "Gana muy poquito". Verifica que funcione como se espera.
  5. El programa debe comenzar a partir del URL: http://localhost:8000/empleados/
  6. Verifica que el XHTML producido sea válido utilizando el Servicio de Validación de W3C.

Nota: Para las dos plantillas solicitadas, utiliza la siguiente plantilla base:

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
 "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">

  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

    <style type="text/css">

      body {
        background-color: #FFFFFF;
        color: #000080;
        font-family: sans-serif;
        font-size: medium;
        margin-top: 20px;
        margin-left: 20px;
        margin-right: 20px;
      }

      hr {
        border: 0;
        color: #0000FF;
        background-color: #0000FF;
        height: 3px;
      }

      table {
        border-collapse: collapse;
        border: 1px solid #000000;
        padding: 0px;
        margin-bottom: 10px;
        color: #000000; 
        background: #E6E6FA;
      }

      td {
        border: 1px solid #000000;
        padding: 10px;
      }

      th {
        border: 1px solid #000000;
        padding: 10px;
        color: #008080;
        background: #B0E0E6;
      } 

      ul.errorlist {
        margin: 0;
        padding: 0;
      }

      .errorlist li {
        background-color: #FF0000;
        color: #FFFFFF;
        display: block;
        font-size: 10px;
        margin: 0 0 3px;
        padding: 4px 5px;
      }

    </style>

    <title>
      {% block titulo %}
        Soy un(a) menso(a) por no cambiar el título
      {% endblock %}
    </title>

  </head>

  <body>

    <h1>
      {% block encabezado %}
        Soy un(a) menso(a) por no cambiar el encabezado
      {% endblock %}
    </h1>

    {% block contenido %}

    {% endblock %}

    {% block pie %}

      <hr/>

      &copy; 2008 por Tecnológico de Monterrey, Campus Estado de México.

    {% endblock %}
    
  </body>

</html>

¿Qué se debe entregar?

Sigue las siguientes indicaciones para entregar tu práctica:

Evaluación

Esta práctica será evaluada usando los siguientes criterios:

100 La práctica cumple con todos los requerimientos.
60-90 La práctica funciona en general, pero contiene uno o varios errores menores.
50 Proyecto Web produce un error a tiempo de ejecución.
DA La solución es un plagio.
© 1996-2008 por Ariel Ortiz Ramírez (ariel.ortiz@itesm.mx)
ArielOrtiz.com | Desarrollado en Django | Licencia de Creative Commons | XHTML válido | CSS válido