Upload
others
View
0
Download
0
Embed Size (px)
Citation preview
Introduccion MVC en Django Primeros pasos
Django Framework
Jose Ortiz Bejar
Universidad Michoacana de San Nicolas de Hidalgo
10 de septiembre de 2014
Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo
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
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
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
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
Introduccion MVC en Django Primeros pasos
MVC en Django
Django Framework [email protected] Universidad Michoacana de San Nicolas de Hidalgo
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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