10 de septiembre de 2014 -...

25
Introducci on MVC en Django Primeros pasos Django Framework Jos e Ortiz Bejar [email protected] Universidad Michoacana de San Nicol as de Hidalgo 10 de septiembre de 2014 Django Framework [email protected] Universidad Michoacana de San Nicol as de Hidalgo

Upload: others

Post on 02-May-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Django Framework

Jose Ortiz Bejar

[email protected]

Universidad Michoacana de San Nicolas de Hidalgo

10 de septiembre de 2014

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 2: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Introduccion

MVC en Django

Primeros pasosPrimera pagina con Django

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 3: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Programando al viejo estilo

#!/ u s r / b i n / env python

i m p o r t MySQLdb

p r i n t ” Content−Type : t e x t / html\n”p r i n t ”<html><head><t i t l e >Books</ t i t l e ></head>”p r i n t ”<body>”p r i n t ”<h1>Books</h1>”p r i n t ”<ul>”

c o n n e c t i o n = MySQLdb . c o n n e c t ( u s e r =’me ’ , passwd =’ l e t m e i n ’ , db=’my db ’ )c u r s o r = c o n n e c t i o n . c u r s o r ( )c u r s o r . e x e c u t e (”SELECT name FROM books ORDER BY p u b d a t e DESC LIMIT 10”)

f o r row i n c u r s o r . f e t c h a l l ( ) :p r i n t ”< l i> %s</ l i >” % row [ 0 ]

p r i n t ”</ul>”p r i n t ”</body></html>”

c o n n e c t i o n . c l o s e ( )

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 4: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

¿Porque es necesario un framework?

I Se tiene la necesidad de que multiples modulos de unaaplicacion se conecten a la base de datos

I Es necesario mezclar lenguajes

I Reusar modulos para diferentes bases de datos

I Separar diseno y desarrollo

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 5: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

¿Que es Django?

Un conjunto de librerıas que provee una infraestructura para eldesarrollo de aplicaciones

I Permiten escribir programas limpios

I Facilitan el mantenimiento

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 6: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

MVC en Django

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 7: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Modelo

models.py contiene la descripcion de la base de datos, representadacomo una clase de python.

# models . py ( d e s c r i p c i o n de l a base de d a t o s )

from django . db i m p o r t models

c l a s s Book ( models . Model ) :name = models . C h a r F i e l d ( m a x l e n g t h =50)p u b d a t e = models . D a t e F i e l d ( )

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 8: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Modelo

I Definir los objetos de la base de datos

I Establecer las relaciones entre los objetos

I Permite acceder a los datos (leer, crear, modificar y borrar)

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 9: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Vista

view.py contiene la logica del sistema de informacion

# v i e w s . py ( L o g i c a d e l s i s t e m a )

from django . s h o r t c u t s i m p o r t r e n d e r t o r e s p o n s efrom models i m p o r t Book

d e f l a t e s t b o o k s ( r e q u e s t ) :b o o k l i s t = Book . o b j e c t s . o r d e r b y (’−pub date ’ ) [ : 1 0 ]r e t u r n r e n d e r t o r e s p o n s e ( ’ l a t e s t b o o k s . html ’ , { ’ b o o k l i s t ’ : b o o k l i s t })

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 10: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Vista

view.py contiene la logica del sistema de informacion

I Ejecuta las operaciones necesarias para devolver el contenidohtml

I Implementa la logica del sistema.

I Interactua con el modelo para extraer informacion de la BD

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 11: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Controlador

urls.py Define como se relacionan las urls con las vistas.

# urls.py (the URL configuration)

from django.conf.urls.defaults import *

import views

urlpatterns = patterns(’’,

(r’^latest/$’, views.latestbooks),

)

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 12: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Plantilla

urls.py Define como se relacionan las urls con las vistas.

# l a t e s t b o o k s . html ( th e t e m p l a t e )

<html><head><t i t l e >Books</ t i t l e ></head><body><h1>Books</h1><ul>{% f o r book i n b o o k l i s t %}< l i >{{ book . name }}</ l i >{% e n d f o r %}</ul></body></html>

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 13: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Enfoque MVC

Django se apega al enfoque MVC.

M El acceso a los datos, es manejado por la capa debase de datos de Django (Modelos).

V La parte en que se selecciona cuales y como semuestran los datos. Vistas y plantillas.

C Selecciona que vista utilizar de acuerdo con laentrada del usuario. La configuracion de urls mapea ametodos Python.

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 14: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Enfoque MTV

Debido a que la ’C’ ya es manejada por el framework. En Djangoserıa mas apropiado hablar de un desarrollo MTV.

M Se sigue utilizando para la capa de datos.

T Se refiere a las plantillas (Template), la capa depresentacion de los datos.

V La capa de logica del sistema.

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 15: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Instalacion

I Descargar y extraer Django-x.x.gz

I cd Django-x-x

I python setup.py install

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 16: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Probar la instalacion

En ms dos/terminal

python

>>> import django

>>> django.VERSION

(1, 4, 0, ’final’, 0)

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 17: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Habilitando el motor de bases de datos

Django soporta cuatro motores de bases de datos

I PostgreSQL (http://www.postgresql.org/)

I SQLite 3 (http://www.sqlite.org/)

I MySQL (http://www.mysql.com/)

I Oracle (http://www.oracle.com/)

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 18: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

SQlite

En nuestro caso usaremos SQlite, para las versiones 2.5 y mayoresPython integra soporte para SQlite.

I La base de datos es un solo archivo

I No se requiere un servidor

I No es necesario hacer instalaciones adicionales

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 19: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Agregar comandos django al path (solo usuarios windows)

I click derecho en Equipo(o y Mi PC)

I Pestana de opciones avanzadas

I Variables de entorno

I editar la variable path y agregar al final;path_to_python\lib\site-packages\django\bin dondepath to python es la ruta donde quedo instalado python (e.j.c:\python).

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 20: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Iniciar un proyecto

En ms dos/terminal

django-admin.py startproject misitio

Esto crea un directorio con la siguiente estructura

misitio/

manage.py

misitio/

__init__.py

settings.py

urls.py

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 21: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Estructura del proyecto

init .py Es un archivo vacıo el cual se utiliza para que pythontrate la aplicacion como un paquete. Generalmenteno es necesario editarlo.

manage.py Utilidad de lınea de comandos que nos permiteinteractuar con el proyecto.

settings.py La configuracion de proyecto Django. Se encuentrapre-editado con valores por defecto.

urls.py Se utiliza para manejar las URLs del proyecto. Comouna especie de tabla de contenido. Inicialmente vacıo.

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 22: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Servidor de desarrollo

Django incluye un servidor web ligero, lo cual permite desarrollarsin necesidad de configurar un servidor web.

python manage.py runserver

Validating models...

0 errors found.

Django version 1.0, using settings ’mysite.settings’

Development server is running at http://127.0.0.1:8000/

Quit the server with CONTROL-C.

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 23: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Primera pagina con Django

La primera Vista

La primera meta es escribir una pagina web que diga: Hola Mundo.La funcion debe escribirse en views.py

from django . h t tp impor t HttpResponsede f h e l l o ( r e q u e s t ) :

r e t u r n HttpResponse ( ’ Hola Mundo ’ )

I Es necesario importar la clase HttpResponse que es parte delmodulo django.http

I Se define una funcion hello (funcion de vista)

I Cada funcion toma al menos un argumento llamado requestpor convencion. Contiene informacion de la peticion web.

I La funcion regresa un objeto django.http.HttpRequest con eltexto ’Hola Mundo’

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 24: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Primera pagina con Django

URLconf

from django . c o n f . u r l s . d e f a u l t s i m p o r t ∗

# Uncomment t h e n e x t two l i n e s to e n a b l e t h e admin :# from django . c o n t r i b i m p o r t admin# admin . a u t o d i s c o v e r ( )

u r l p a t t e r n s = p a t t e r n s ( ’ ’ ,# Example :# ( r ’ ˆ m y s i t e / ’ , i n c l u d e ( ’ m y s i t e . f o o . u r l s ’ ) ) ,

# Uncomment t h e admin / doc l i n e below and add ’ d jango . c o n t r i b . admindocs ’# to INSTALLED APPS to e n a b l e admin documentat ion :# ( r ’ ˆ admin / doc / ’ , i n c l u d e ( ’ d jango . c o n t r i b . admindocs . u r l s ’ ) ) ,

# Uncomment t h e n e x t l i n e to e n a b l e t h e admin :# ( r ’ ˆ admin / ’ , i n c l u d e ( admin . s i t e . u r l s ) ) ,

)

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo

Page 25: 10 de septiembre de 2014 - dep.fie.umich.mxdep.fie.umich.mx/~job/media/cursos/resources/django.pdf · Introducci onMVC en Django Primeros pasos Agregar comandos django al path (solo

Introduccion MVC en Django Primeros pasos

Primera pagina con Django

La primera URLconfPara agregar una vista a URLconf, es necesario poner un tuple quemapea una patron de URL a una funcion de vista.

from django . c o n f . u r l s . d e f a u l t s i m p o r t ∗from m y s i t e . v i e w s i m p o r t h e l l o

u r l p a t t e r n s = p a t t e r n s ( ’ ’ ,( ’ ˆ h e l l o /$ ’ , h e l l o ) ,

)

I Primero se importa la funcion hello de la vista –misitio/views.py se traduce como misitio.views en la sintaxisde import de python.

I Se agrega la lınea (’^hello/$’,hello), a urlpatterns. Elprimer elemento es una expresion regular y el segundo es unafuncion de la vista.

Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo