6
Avenida de Castilla,1 - Edificio Best Point - Oficina 21B 28830 San Fernando de Henares (Madrid) tel./fax: +34 91 675 33 06 [email protected] - www.autentia.com Somos su empresa de Soporte a Desarrollo Informático. Ese apoyo que siempre quiso tener... 1. Desarrollo de componentes y proyectos a medida Tecnología Desarrollo Sistemas Gran Empresa Producción autentia Certificación o Pruebas Verificación previa RFP Concurso Consultora 1 Consultora 2 Consultora 3 Equipo propio desarrollo Piloto 3a 3b 1. Definición de frameworks corporativos. 2. Transferencia de conocimiento de nuevas arquitecturas. 3. Soporte al arranque de proyectos. 4. Auditoría preventiva periódica de calidad. 5. Revisión previa a la certificación de proyectos. 6. Extensión de capacidad de equipos de calidad. 7. Identificación de problemas en producción. 3. Arranque de proyectos basados en nuevas tecnologías ¿Qué ofrece Autentia Real Business Solutions S.L? Para más información visítenos en: www.autentia.com Compartimos nuestro conociemiento en: www.adictosaltrabajo.com Gestor portales (Liferay) Gestor de contenidos (Alfresco) Aplicaciones híbridas Tareas programadas (Quartz) Gestor documental (Alfresco) Inversión de control (Spring) BPM (jBPM o Bonita) Generación de informes (JasperReport) ESB (Open ESB) Control de autenticación y acceso (Spring Security) UDDI Web Services Rest Services Social SSO SSO (Cas) Spring MVC, JSF-PrimeFaces /RichFaces, HTML5, CSS3, JavaScript-jQuery JPA-Hibernate, MyBatis Motor de búsqueda empresarial (Solr) ETL (Talend) Dirección de Proyectos Informáticos. Metodologías ágiles Patrones de diseño TDD 2. Auditoría de código y recomendaciones de mejora 4. Cursos de formación (impartidos por desarrolladores en activo)

F?:@'.$&2& %G&1'210*%A'*5% H&$02'$$%!5&102$%!,IJ · Últimos Tutoriales del Autor » Promesas: Organiza tu código Javascript/Coffeescript » Como interactuar con el mundo físico

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

Page 1: F?:@'.$&2& %G&1'210*%A'*5% H&$02'$$%!5&102$%!,IJ · Últimos Tutoriales del Autor » Promesas: Organiza tu código Javascript/Coffeescript » Como interactuar con el mundo físico

Avenida de Castilla,1 - Edificio Best Point - Oficina 21B28830 San Fernando de Henares (Madrid)

tel./fax: +34 91 675 33 [email protected] - www.autentia.com

Somos su empresa de Soporte a Desarrollo Informático.Ese apoyo que siempre quiso tener...

1. Desarrollo de componentes y proyectos a medida

TecnologíaDesarrolloSistemas

Gran Empresa

Producción

autentia

Certificacióno Pruebas

Verificación previa

RFP Concurso

Consultora 1

Consultora 2

Consultora 3

Equipo propio desarrolloPiloto

3a

3b

1. Definición de frameworks corporativos.2. Transferencia de conocimiento de nuevas arquitecturas.3. Soporte al arranque de proyectos.4. Auditoría preventiva periódica de calidad.5. Revisión previa a la certificación de proyectos.6. Extensión de capacidad de equipos de calidad.7. Identificación de problemas en producción.

3. Arranque de proyectos basados en nuevas tecnologías

¿Qué ofrece Autentia Real Business Solutions S.L?

Para más información visítenos en: www.autentia.com

Compartimos nuestro conociemiento en: www.adictosaltrabajo.com

Gestor portales (Liferay)Gestor de contenidos (Alfresco)Aplicaciones híbridas

Tareas programadas (Quartz)Gestor documental (Alfresco)Inversión de control (Spring)

BPM (jBPM o Bonita)Generación de informes (JasperReport)ESB (Open ESB)

Control de autenticación y acceso (Spring Security)UDDIWeb ServicesRest ServicesSocial SSOSSO (Cas)

Spring MVC, JSF-PrimeFaces /RichFaces, HTML5, CSS3, JavaScript-jQuery

JPA-Hibernate, MyBatisMotor de búsqueda empresarial (Solr)ETL (Talend)

Dirección de Proyectos Informáticos.Metodologías ágilesPatrones de diseñoTDD

2. Auditoría de código y recomendaciones de mejora

4. Cursos de formación (impartidos por desarrolladores en activo)

Page 2: F?:@'.$&2& %G&1'210*%A'*5% H&$02'$$%!5&102$%!,IJ · Últimos Tutoriales del Autor » Promesas: Organiza tu código Javascript/Coffeescript » Como interactuar con el mundo físico

Entra  en  Adictos  a  través  de

Entrar

 E-­mail

Contraseña

Deseo  registrarmeOlvidé  mi  contraseña

Inicio Quiénes  somos Formación Comparador  de  salarios Nuestros  libros Más

»  Estás  en:  Inicio  Tutoriales  Un  vistazo  a  Django  Web  Framework

Síguenos  a  través  de:

Catálogo  de  servicios

Autentia

         

Últimas  Noticias

»  Técnicas  de  división  dehistorias  de  usuario

»  Dolomitas  on  Giro

»  Comentando  el  libro:  AgileManagement  de  AngelMedinilla

»  Final  de  temporada  deTerrakas  Autentiafreaklances

»  Atención,  APLAZADOEstreno  último  capítulo  deTerrakas

Histórico  de  noticias

Últimos  Tutoriales

»  Introducción  a  XQuery  conejemplos

»  Contando  mi  experienciaen  los  talleres  gratuitos  deApple

»  Comentando  el  libro:Disciplined  Agile  Delivery(DaD)

»  Crear  una  rutina  propia  enTalend

»  Spring  Container  y  laInyección  de  Dependencias

 

Ver  todos  los  tutoriales  del  autor

Paulino  Corujo

Java  Developer  &  Javascript  geek.  Passionate  about  development.

Contacta  en:  LinkedIn  y  en  Twitter:  @pcorujo

Fecha  de  publicación  del  tutorial:  2013-­09-­02 Tutorial  visitado  1  veces  Descargar  en  PDF

Un  vistazo  a  Django  Web  Framework

Indice

IntroducciónManos  a  la  obraConclusiones

Introducción

En  este  tutorial  vamos  a  ver  un  introducción,  de  forma  práctica,  al  framework  Django  para  desarrollo  de  aplicacionesweb.  Django  es  la  alternativa  en  Python  a  frameworks  como  Spring  Roo  (Java),  Play  Framework  (Java  &  Scala)  o  Rubyon  Rails  (Ruby).

Django  es  un  framework  de  desarrollo  web  escrito  en  Python  que  consiste  en  una  serie  de  librerías  creadas  con  el  fin  dehacer  el  desarrollo  de  aplicaciones  web  más  rápido  y  cómodo  para  los  desarrolladores.  Entre  las  facilidades  queproporciona  Django  está  la  implementación  de  un  sistema  de  plantillas,  un  ORM  bastante  potente,  servidor  para  entornode  desarrollo,  base  de  datos  embebida...

Python  a  su  vez  es  un  lenguaje  fácil  de  aprender,  expresivo  y  con  una  sintaxis  sencilla  que  te  permitirá  ponerte  manos  ala  obra  en  muy  poco  tiempo.

Manos  a  la  obra

Para  seguir  este  tutorial  necesitas:

Interprete  de  Python  2.7.x  instalado.virtualenv:  Herramienta  para  crear  entornos  aislados  en  Pythonpip:  Herramienta  para  gestionar  paquetes  Python

En  primer  lugar  vamos  a  crear  un  entorno  Python  aislado  para  nuestras  pruebas  con  Django.  Para  ello  ejecutaremos  elcomando  virtualenv  tutorialenv.  Virtualenv  creará  entonces  el  directorio  tutorialenv  que  tendrá  la  siguiente  estructura:

binincludelib

de  momento  nos  fijaremos  en  el  directorio  bin  donde  tenemos  los  ejecutables  del  inteprete  de  python,  el  gestor  depaquetes  pip  y  el  script  activate  para  activar  el  entorno  virtual  recien  creado.

Para  activar  el  nuevo  entorno  usaremos  el  siguiente  comando  source  bin/activate  si  nos  encontramos  en  un  sistemaPosix  (Linux,  OS  X...)  o  ruta\a\entorno\activate  si  el  entorno  es  windows.

Desde  este  momento  nuestro  entorno  de  ejecución  Python  será  el  entorno  virtual  recién  creado.  Las  librerías  queinstalemos  ahora  serán  instaladas  de  forma  aislada  a  ese  entorno  y  no  de  forma  compartida.  Para  desactivar  el  entornovirtual  tendremos  que  ejecutar  deactivate

Para  instalar  las  librerías  de  Django  vamos  a  usar  pip,  ejecutamos  el  comando  pip  install  django  asegurándonos  deque  tenemos  el  entorno  virtual  activado  para  descargar  las  librerías  de  Django  en  ese  entorno.  Una  vez  ejecutadotendremos  ya  instalado  Django  en  nuestro  sistema.

Para  crear  la  estructura  de  nuestro  proyecto,  ejecutaremos  el  comando  django-­admin.py  startproject  tutorial.  Comoresultado  se  crearán  una  serie  de  ficheros  y  carpetas  con  la  estructura  y  configuración  básica  para  nuestro  proyecto.Este  directorio  es  el  raiz  de  nuestro  proyecto.

Una  aplicación  Django  se  suele  organizar  en  módulos  o  miniaplicaciones  más  pequeñas  que  pueden  ser  reutilizables  enotras  proyectos.  Para  crear  un  módulo  nuevo  para  nuestra  aplicación  ejecutaremos  el  comando  django-­admin.pystartapp  miaplicacion  en  el  directorio  raiz  de  nuestra  aplicacion  creado  anteriormente  ($tutorial/  de  aqui  en  adelante).

El  siguiente  paso  es  configurar  la  base  de  datos  que  usaremos  para  persisitir  nuestro  modelo  y  registrar  nuestro  módulo

Page 3: F?:@'.$&2& %G&1'210*%A'*5% H&$02'$$%!5&102$%!,IJ · Últimos Tutoriales del Autor » Promesas: Organiza tu código Javascript/Coffeescript » Como interactuar con el mundo físico

Últimos  Tutoriales  del

Autor

»  Promesas:  Organiza  tucódigoJavascript/Coffeescript

»  Como  interactuar  con  elmundo  físico  medianteJavascript  y  NodeJS

»  Node,  Express  y  MongoDB:Crea  un  API  REST  enJavaScript  server-­side  deforma  rápida,  sencilla  yeficiente

Últimas  ofertas  de

empleo

2011-­09-­08Comercial  -­  Ventas  -­MADRID.

2011-­09-­03Comercial  -­  Ventas  -­VALENCIA.

2011-­08-­19Comercial  -­  Compras  -­ALICANTE.

2011-­07-­12Otras  Sin  catalogar  -­MADRID.

2011-­07-­06Otras  Sin  catalogar  -­LUGO.

miaplicacion  como  aplicación.  Para  ello  editaremos  el  fichero  $tutorial/tutorial/settings.py  y  añadimos  la  siguienteinformación:  En  el  diccionario  DATABASES  añadimos  la  siguiente  información:

En  ENGINE  configuramos  el  driver  sqlite3  que  es  la  base  de  datos  embebida  que  viene  con  Django  para  elentorno  de  desarrolloEn  NAME  configuramos  el  fichero  que  contendrá  nuestra  base  datos  en  forma  de  ruta  absoluta  al  fichero.  Esnecesario  que  estos  directorios  existan.  El  fichero  se  creará  una  vez  sincronicemos  la  base  de  datos.

Para  registrar  nuestro  módulo  como  aplicación  añadimos  una  entrada  en  la  tupla  de  aplicaciones:

Como  se  puede  intuir,  por  defecto  Django  te  registra  una  serie  de  módulos,  entre  los  que  cabe  destacar:

django.contrib.auth:  Sistema  de  autenticación  usado  por  Djangodjango.contrib.sessions:  framework  para  gestionar  sesionesdjango.contrib.admin:  administración  de  nuestro  sitio  web,  por  defecto  comentado,  lo  descomentaremos  paraactivarlo

Ahora  podemos  sincronizar  por  primera  vez  nuestra  base  de  dato  con  lo  que  crearemos  el  modelo  de  datos  base  queusará  Django.  Ejecutamos  para  ello  el  comando  $tutorial/python  manage.py  syncdb.  Cuando  nos  pregunte  por  lacreación  de  la  creación  del  superuser  de  nuestro  site  respondemos  que  si  y  le  damos  un  usuario  y  password.  Estaoperación  se  puede  hacer  más  adelante  tambien.

Para  comprobar  que  todo  está  correctamente  instalado,  arrancaremos  el  servidor  de  desarrollo  embebido  en  Djangoejecutando  python  manage.py  runserver.  Si  todo  está  bien  configurado  obtendremos  la  siguiente  salida  por  pantalla:

Vamos  a  crear  ahora  el  modelo  de  nuestra  aplicación  de  ejemplo.  Editamos  el  fichero$tutorial/miaplicacion/models.py  y  creamos  la  clase  Persona:

Con  el  código  anterior,  hemos  creado  una  clase  Persona  que  extiende  de  la  clase  Model  de  Django.  Nuestra  clase  tienedos  atributos,  nombre  y  edad.  Además  hemos  añadido  el  método  __unicode__  para  hacer  imprimible  de  forma  legibleuna  instancia  de  esa  clase  para  posteriormente  hacer  pruebas  con  nuestro  modelo  desde  la  consola  de  Python.  Esimportante  recordar  tambien  que  en  Python  la  indentación  es  muy  importante.

Como  nuestro  modelo  va  a  ser  persistente  tenemos  que  crear  la  tabla  que  almacenará  las  Personas,  el  ORM  de  Djangose  encarga  de  ello,  solo  tendremos  que  ejecutar  de  nuevo  el  comando  $tutorial/python  manage.py  syncdb  y  la  tablamiaplicacion_persona  se  creará  en  nuestra  base  de  datos  SQLite.

Vamos  a  crear  ahora  una  plantilla  que  permita  visualizar  una  lista  de  Personas.  Para  ello  creamos  el  directorio$tutorial/miaplicacion/templates/  y  dentro  de  él,  el  fichero  index.html  con  el  siguiente  código:

Para  enlazar  nuestra  Persona  (modelo)  con  nuestra  plantilla  (vista),  tendremos  que  crear  un  View  de  Django(Controlador),  existen  varias  formas  de  crear  estos  controladores,  pero  vamos  a  hacerlo  extendiendo  la  claseTemplateView  de  Django  en  el  fichero  $tutorial/miaplicacion/  :

1234567891011

DATABASES  =  {      'default':  {                'ENGINE':  'django.db.backends.sqlite3',  #  Add  'postgresql_psycopg2',  'mysql',  'sqlite3'  or  'oracle'.                'NAME':  '/Users/user/tutorial/tutorial.db',                                            #  Or  path  to  database  file  if  using  sqlite3.                #  The  following  settings  are  not  used  with  sqlite3:                'USER':  '',                'PASSWORD':  '',                'HOST':  '',                                            #  Empty  for  localhost  through  domain  sockets  or  '                'PORT':  '',                                            #  Set  to  empty  string  for  default.        }}

12345678910111213

INSTALLED_APPS  =  (        'django.contrib.auth',        'django.contrib.contenttypes',        'django.contrib.sessions',        'django.contrib.sites',        'django.contrib.messages',        'django.contrib.staticfiles',        'miaplicacion',        #  Uncomment  the  next  line  to  enable  the  admin:        'django.contrib.admin',        #  Uncomment  the  next  line  to  enable  admin  documentation:        #  'django.contrib.admindocs',)

1234567

Validating  models...  0  errors  foundAugust  29,  2013  -­  06:10:26Django  version  1.5.2,  using  settings  'tutorial.settings'Development  server  is  running  at  http://127.0.0.1:8000/Quit  the  server  with  CONTROL-­C.

1234567

from  django.db  import  models  class  Persona(models.Model):        nombre  =  models.CharField(max_length=30)        edad  =  models.IntegerField(default=0)        def  __unicode__(self):                return  'Nombre:  {nombre},  edad:  {edad}'.format(nombre=self.nombre,  edad=self.edad)

123456789

{%  if  personas  %}        <ul>                {%  for  persona  in  personas  %}                        <li>Nombre:  {{  persona.nombre  }},  edad:  {{  persona.edad  }}</li>                {%  endfor  %}        </ul>{%  else  %}        <p>No  hay  personas  creadas.</p>{%  endif  %}

123456

from  django.views.generic  import  TemplateViewfrom  miaplicacion.models  import  Persona  class  IndexView(TemplateView):        template_name  =  "index.html"  

?

?

?

?

?

?

Page 4: F?:@'.$&2& %G&1'210*%A'*5% H&$02'$$%!5&102$%!,IJ · Últimos Tutoriales del Autor » Promesas: Organiza tu código Javascript/Coffeescript » Como interactuar con el mundo físico

Ahora  tenemos  que  indicarle  a  Django  la  URL  mediante  la  cual  haremos  accesible  la  vista  creada,  para  ello  creamos  ennuestro  módulo  el  fichero  $tutorial/miaplicacion/urls.py  y  añadimos  lo  siguiente:

y  finalmente  incluimos  las  URLs  en  el  módulo  principal  del  proyecto,  es  decir,  el  fichero  $tutorial/tutorial/urls.py:

Como  se  puede  comprobar,  el  mapeo  de  URLs  tanto  para  indicar  las  vistas  como  para  incluirlas  de  otros  ficheros  sehace  mediante  expresiones  regulares,  lo  cual  nos  permite  mucha  flexibilidad  a  la  hora  de  expresar  la  URL  con  la  quehacer  el  matching  del  patrón.

Vamos  a  probar  nuestra  aplicación,  para  ello  arrancamos  de  nuevo  el  servidor  de  test  incluido  en  Django:  python$tutorial/manage.py  runserver  asegurándonos  que  tenemos  nuestro  entorno  virtual  de  Pyhton  activado.  Una  vezhecho  esto  solamente  tenemos  que  poner  la  siguiente  URL  en  el  navegador  para  probar  nuestra  vista:http://localhost:8000/miaplicacion/index

El  resultado  no  es  muy  allá  ya  que  no  tenemos  ningun  modelo  creado  y  por  tanto  el  bucle  for  de  la  plantilla  no  seejecuta.  Vamos  a  añadir  a  continuación  algunas  instancias  de  nuestro  modelo.  Podemos  hacer  esto  de  varias  formas,insertando  directamente  en  la  base  de  datos,  interactuando  con  el  shell  de  python  y  el  ORM  de  Django,  usando  laconsola  de  administración  del  sitio,  etc....  Vamos  a  probar  las  dos  ultimas:

Para  usar  el  shell  de  Python  y  usar  el  API  del  ORM  de  Django  ejecutaremos  el  comando  python  $tutorial/manage.pyshell

e  importamos  nuestro  modelo  para  crear  algunas  instancias  y  guardarlas:

Lo  que  hemos  hecho  aqui  es  crear  dos  instancias  de  la  clase  Persona  para  posteriormente  guardarlas.  El  método  save()heredado  de  django.db.models.Model  persistirá  en  base  de  datos  las  instancias  del  modelo  mediante  el  ORM  deDjango.  Tambien  al  ejecutar  la  función  print  pasándole  como  argumento  una  instancia  de  Persona,  se  llamará  al  método__unicode__  implementado  para  tener  una  representación  del  objeto  creado.

Una  vez  que  tenemos  un  par  de  instancias  creadas  y  guardadas,  si  recargamos  nuestra  vista  en  el  navegador  yapodemos  ver  que  se  recuperan  y  se  ejecuta  el  bucle  for  de  la  plantilla  creada.

Otro  método  para  añadir  instancias  del  modelo,  es  usar  la  consola  de  administración  del  sitio.  Para  habilitar  la  consolade  administración  hay  que  mapear  la  URL  exactamente  igual  a  como  hicimos  con  nuestra  vista,  nuestro  ficheros$tutorial/tutorial/urls.py  contendrá  entonces:

Fíjate  que  tambien  se  ha  añadido  una  llamada  a  la  función  autodiscover(),  esto  es  para  automáticamente  cargar  losmodulos  admin.py  de  las  aplicaciones  instaladas  (en  nuestro  caso  la  aplicación  miaplicacion).

Añadimos  por  tanto  el  fichero  admin.py  a  la  aplicacion  miaplicacion,  es  decir,  en  el  directorio  $tutorial/miaplicacion/  yescribimos  lo  siguiente:

con  esto  registraremos  nuestro  modelo  como  gestionable  desde  la  consola  de  administración.

Sólo  nos  queda  ahora  acceder  a  la  aplicacion  de  administración  mediante  la  URL  http://localhost:8000/admin/  eidentificarnos  con  el  usuario  creado  al  principio  del  tutorial.Una  vez  dentro  podremos  ver  nuestra  aplicación  (entre  otras  opciones)  y  nuestro  modelo  Persona.  Podemos  navegarpor  la  aplicación  para  crear,  modificar,  consultar  y  eliminar  instancias  del  modelo.

Hasta  ahora  hemos  construido  una  aplicación  muy  sencilla  que  consulta  nuestro  modelo  en  base  de  datos  y  muestra  losresultados  por  pantalla.  Vamos  a  hacer  nuestro  ejemplo  un  poco  más  rico  dando  la  posibilidad  de  crear  nuevasinstancias  de  nuestro  modelo  mediante  un  formulario  simple.

Modificamos  nuestra  plantilla  index.html  para  que  contenga  un  formulario  para  la  creación  de  nuevas  Personas:

78910

       def  get_context_data(self,  **kwargs):                context  =  super(IndexView,  self).get_context_data(**kwargs)                context['personas']  =  Persona.objects.all()                return  context

123456

from  django.conf.urls  import  patterns,  urlfrom  miaplicacion.views  import  IndexView  urlpatterns  =  patterns('',                                              url(r'^index/',  IndexView.as_view(),  name='index'),)

12345

from  django.conf.urls  import  include,  patterns,  url  urlpatterns  =  patterns('',        url(r'^miaplicacion/',  include('miaplicacion.urls')),)

123456789

>>>  from  miaplicacion.models  import  Persona>>>  persona  =  Persona(nombre='Homer',  edad=38)>>>  persona2  =  Persona(nombre='Bart',  edad=10)>>>  persona.save()>>>  persona2.save()>>>  print  personaNombre:  Homer,  edad:  38>>>  Persona.objects.all()[<Persona:  Nombre:  Homer,  edad:  38>,  <Persona:  Nombre:  Bart,  edad:  10>]

123456789

from  django.conf.urls  import  include,  patterns,  urlfrom  django.contrib  import  admin  admin.autodiscover()  urlpatterns  =  patterns('',        url(r'^admin/',  include(admin.site.urls)),        url(r'^miaplicacion/',  include('miaplicacion.urls')),)

1234

from  django.contrib  import  adminfrom  miaplicacion.models  import  Persona  admin.site.register(Persona)

123456

{%  if  personas  %}        <ul>                {%  for  persona  in  personas  %}                        <li>Nombre:  {{  persona.nombre  }},  edad:  {{  persona.edad  }}</li>                {%  endfor  %}        </ul>

?

?

?

?

?

?

Page 5: F?:@'.$&2& %G&1'210*%A'*5% H&$02'$$%!5&102$%!,IJ · Últimos Tutoriales del Autor » Promesas: Organiza tu código Javascript/Coffeescript » Como interactuar con el mundo físico

En  el  ejemplo  usamos  csrf_token  para  indicar  que  se  genere  un  token  (en  un  campo  oculto)  específico  para  ese  envíode  formulario  y  evitar  así  ataques  de  tipo  cross  site  request  forgery  también  usamos  form.as_p  para  indicar  al  interpretede  las  plantillas  que  pinte  cada  campo  del  formulario  dentro  de  un  tag  <p>.Por  último  llamamos  a  la  función  url  indicando  el  nombre  de  la  URL  para  dar  de  alta  la  persona,  así  nos  evitamos  porURLs  hardcodeadas  en  las  plantillas.

Como  siguiente  paso  registramos  la  URL  de  alta  de  persona  en  el  fichero  urls.py:

Más  adelante  añadiremos  la  clase  PersonaCrearView  registrada.  De  momento  modificamos  nuestro  fichero  models.pypara  que  contenga  la  clase  que  representará  a  nuestro  formulario:

En  nuestro  fichero  views.py  añadimos  la  vista  que  procesará  nuestro  formulario:

La  vista  extiende  de  FormView,  se  trata  de  un  tipo  de  vista  especial  para  procesar  formularios  que  contiene  métodospara  validad,  redirigir  el  flujo  una  vez  procesado  el  formulario,  etc...  En  esta  vista  especificamos  mediante  un  atributo  cual  es  nuestra  clase  que  representa  al  formulario  a  procesar(PersonaForm).  Cuando  recibimos  un  formulario  mediante  un  POST  a  la  URL  de  esta  vista  Django  llama  a  una  serie  demétodos  en  nuestro  FormView,  en  ese  ciclo  de  vida,  se  crea  una  nueva  instancia  del  modelo  Persona  y  posteriormentese  calcula  la  URL  a  la  que  redirigir  la  petición  si  se  procesa  correctamente,  esto  ultimo  se  hace  con  la  función  reversepara  calcular  la  URL  a  partir  del  nombre  dado  de  alta  en  la  configuración  de  URLs  (fichero  urls.py).

Conclusiones

En  este  tutorial  hemos  visto  una  muy  breve  introducción  al  framework  Django  con  un  ejemplo  muy  básico  de  la  creaciónde  modelos,  ORM  y  formularios,  pero  la  potencia  de  Django  y  el  API  que  ofrece  es  muy  amplio  para  facilitar  el  desarrollorápido  de  aplicaciones  web  basadas  en  un  patrón  CRUD.

En  la  URL  del  sitio  web  de  Django  se  puede  encontrar  información  muy  extensa  sobre  su  API  y  las  muchísimasposibilidades  que  ofrece.

Si  quieres  descargar  el  código,  puedes  hacerlo  en:  [email protected]:pcorujo/django-­tutorial.git

A  continuación  puedes  evaluarlo:

Regístrate  para  evaluarlo

789101112131415

{%  else  %}        <p>No  hay  personas  creadas.</p>{%  endif  %}  <form  action="{%  url  'crearPersona'  %}"  method="post">        {%  csrf_token  %}        {{  form.as_p  }}        <input  type="submit"  value="Submit"></form>

1234567

from  django.conf.urls  import  patterns,  urlfrom  miaplicacion.views  import  IndexView,  PersonaCrearView  urlpatterns  =  patterns('',                                              url(r'^index/',  IndexView.as_view(),  name='index'),                                              url(r'^crearPersona/',  PersonaCrearView.as_view(),  name='crearPersona')

12345678910111213141516

from  django.db  import  modelsfrom  django.forms  import  ModelForm    class  Persona(models.Model):        nombre  =  models.CharField(max_length=30)        edad  =  models.IntegerField(default=0)          def  __unicode__(self):                return  'Nombre:  {nombre},  edad:  {edad}'.format(nombre=self.nombre,  edad=self.edad)    class  PersonaForm(ModelForm):        class  Meta:                model  =  Persona                fields  =  ['nombre',  'edad']

1234567891011121314151617181920212223242526

from  django.views.generic  import  TemplateView,  FormViewfrom  django.core.urlresolvers  import  reversefrom  miaplicacion.models  import  Persona,  PersonaForm    class  IndexView(TemplateView):        template_name  =  "index.html"          def  get_context_data(self,  **kwargs):                context  =  super(IndexView,  self).get_context_data(**kwargs)                context['personas']  =  Persona.objects.all()                context['form']  =  PersonaForm                return  context  class  PersonaCrearView(FormView):        form_class  =  PersonaForm          def  form_valid(self,  form):                Persona.objects.create(                        nombre=form.cleaned_data['nombre'],                        edad=form.cleaned_data['edad'],                )                return  super(PersonaCrearView,  self).form_valid(form)          def  get_success_url(self):                return  reverse('index')

?

?

?

Page 6: F?:@'.$&2& %G&1'210*%A'*5% H&$02'$$%!5&102$%!,IJ · Últimos Tutoriales del Autor » Promesas: Organiza tu código Javascript/Coffeescript » Como interactuar con el mundo físico

 Esta  obra  está  licenciada  bajo  licencia  Creative  Commons  de  Reconocimiento-­No  comercial-­Sin  obras  derivadas  2.5

Share | 0

»  Registrate  y  accede  a  esta  y  otras  ventajas  «

Anímate  y  coméntanos  lo  que  pienses  sobre  este  TUTORIAL:

Por  favor,  vota  +1  o  compártelo  si  te  pareció  interesante

More ShareShareShareShareShareShare

Copyright  2003-­2013  ©  All  Rights  Reserved  |  Texto  legal  y  condiciones  de  uso  |  Banners  |  Powered  by  Autentia  |  Contacto