Table Of ContentESCUELA TÉCNICA SUPERIOR DE INGENIERÍA
DE TELECOMUNICACIÓN
UNIVERSIDAD POLITÉCNICA DE CARTAGENA
Trabajo Fin de Grado
Desarrollo de una aplicación web con Django para
evaluación automática de código Python
Autor: Juan Luis Navarro Rey
Director: Fernando Losilla López
Junio 2017
Autor Juan Luis Navarro Rey
E-maildelautor [email protected]
Director Fernando Losilla López
E-maildelautor [email protected]
Codirector(es)
Desarrollo de una aplicación web con Django para
TítulodelTFG
evaluación automática de código Python
Descriptores
Resumen:
EnesteTFEsehadesarrolladounaaplicaciónwebquepermiteaunprofesor
crear asignaciones en la que los alumnos deben enviar un código que es eva-
luado por un servidor. Se ha desarrollado un interfaz web que permite tanto
a profesores como a alumnos subir, crear y cargar asignaciones, respectiva-
mente. El interfaz permite la creación de asignaciones sencillas, generando
código en el servidor para la comprobación de resultados. Asi mismo, se
hacontempladolaposibilidaddequeprofesoresconmayoresconocimientos
puedan crear asignaciones más complejas, modificando los archivos genera-
dos.
Titulación Grado en Ingeniería Telemática
Intensificación
Departamento Tecnologías de la Información y las Comunicaciones
Fechadepresentación Junio 2017
Agradecimientos
Agradezcoamifamiliatodoelapoyoquemehadadoyelesfuerzorealizadodurante
mi etapa como estudiante.
También agradezco a mi director Fernando Losilla, por haberme permitido tener la
oportunidad de realizar este proyecto con él y principalmente por todo el tiempo y
dedicación que ha invertido en mí y en que este proyecto saliese adelante.
Yaporúltimo,agradezcoamiscompañerosdeclaselosbuenosratospasadosdurante
la carrera.
Contenidos
Contenidos 7
Listadefiguras 11
Listadetablas 13
1 Introducción 15
1.1 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2 Metodología de trabajo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.1 Scrum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
1.2.2 Subversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.3 Funcionalidad de la aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
1.4 Evolución del proyecto . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
2 Tecnologías 21
2.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.1 HTML5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.2 CSS3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2.1.3 JavaScript . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
2.1.4 jQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
2.1.5 AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.1.6 Python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2 Bootstrap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
2.2.1 Características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.2.2 Componentes webs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3 Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
2.3.1 Características . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.2 Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
2.3.3 Patrón Modelo Vista Controlador . . . . . . . . . . . . . . . . . . . . . 26
2.4 AngularJS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.4.1 Componentes básicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28
2.4.2 Principales directivas . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.5 MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.5.1 Manejo de la base de datos . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.6 Google Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.7 JQuery validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
2.8 JQuery confirm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
3 Desarrollodelcliente 33
3.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.2 Funcionalidad de los roles . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
3.3 Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
3.4 Explicación de las vistas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.4.1 Código común . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.4.2 Editor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
7
CONTENIDOS
3.4.3 Mis ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
3.4.4 Estadísticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.4.5 Nuevo ejercicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38
3.4.6 Ejercicios mandados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
3.4.7 Ajustes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
4 Desarrollodelservidor 43
4.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.2 Estructura . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
4.3 Composición de la base de datos . . . . . . . . . . . . . . . . . . . . . . . . . . 44
4.4 Funcionalidad . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4.1 Inicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4.2 Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4.3 Signup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
4.4.4 Crear plantillas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
4.4.5 Obtener ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.4.6 Borrar ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.4.7 Obtener ejercicios del alumno . . . . . . . . . . . . . . . . . . . . . . . 48
4.4.8 Corregir ejercicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4.4.9 Actualizar nota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
4.4.10 Generación de las estadísticas . . . . . . . . . . . . . . . . . . . . . . . 49
5 Pruebasdelaaplicación 51
5.1 Registro . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.2 Login . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.3 Ajustes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.4 Crear ejercicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.5 Modificar nota . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.6 Subir ejercicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.7 Corregir ejercicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54
6 Conclusionesylíneasfuturas 57
6.1 Conclusiones . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.2 Líneas futuras . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
Bibliografía 59
A Manualdelusuario 61
A.1 Introducción . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
A.2 Rol invitado . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
A.3 Rol administrador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
A.4 Rol profesor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
A.4.1 Crear ejercicio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64
A.4.2 Ejercicios mandados . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
A.4.3 Estadísticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65
A.5 Rol alumno . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
A.5.1 Mis ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66
A.5.2 Estadísticas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
8
CONTENIDOS
B Manualdedespliegue 69
B.1 Instalación de python . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
B.1.1 Instalación de Django . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
B.2 Instalación de MongoDB . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
B.3 Instalación de los frameworks . . . . . . . . . . . . . . . . . . . . . . . . . . . 70
B.4 Instalación de las librerías JavaScript . . . . . . . . . . . . . . . . . . . . . . . 70
B.4.1 Instalación de jQuery . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
B.4.2 Editor ACE . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
B.4.3 Google Charts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
B.4.4 jQuery validation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
B.4.5 jQuery confirm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71
B.5 Desplegando la aplicación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72
9
Description:Se actualiza la versión del framework AngularJS a la ver- sión 1.5.6. se ha usado para realizar los gráficos estadísticos de la aplicación web.