django el curso Día 5 Parte 2

Documentos relacionados
Introducción a las Redes de Computadoras. Obligatorio

ASP.NET. Laboratorio de Programación Lorena Castañeda Bueno

Introducción al desarrollo web (idesweb)

Sesiones en PHP. Área de Ingeniería Telemática

En nuestra computadora

Tema 4. II - Cookies. Arquitecturas Distribuidas 11/12

Programación páginas web. Servidor (PHP)

Presentación de la Práctica Final

PROGRAMACIÓN PÁGINAS WEB CON PHP

Demo - DataSnap y Nube

ATEL ASESORES C.A IP Multimedia Subsystem Prof. Diógenes Marcano

Introducción a aplicaciones Web. Laboratorio de Programación Lorena Castañeda Bueno

Curso 2008/2009 Arquitecturas Distribuidas 3

La web (el servicio WWW)

PROGRAMACIÓN EN PHP. 1. Identificar las características y modalidad de programación bajo PHP.

Curso Experto Programador PHP

Desarrollo de módulos con Drupal 6

Curso de HTML5 y CSS3

Lección 1 Introducción a Struts. uacosta@globalmentoring.com.mx

Especificación WebService para:

Desarrollo y servicios web

Symfony Capa de Controladores (Lógica de presentación) Rodolfo Campos

CURSO DE PROGRAMACIÓN PHP MySQL


DIPLOMADO EN SEGURIDAD INFORMATICA

Redes de Computadores II

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

Práctica 5: Callbacks RMI.

Impresión en red: Cómo hacer que funcione

Servidores Web E2B2C. Leandro Radusky Esteban Lanzarotti. Nov 2014

DOCS. Pautas básicas para el DESARROLLO DE PLUGINS

Posicionar en Google la Central de Reservas On-Line: Generar Google Sitemap

Diplomado Java. Descripción. Objetivo. A quien está dirigido. Requisitos. Beneficios

Ecyware GreenBlue Inspector

Puede adaptarse a las necesidades específicas de cada empresa y permite la integración con sistemas backend.

XPERTO EN DISEÑO DE PÁGINAS WEB

Máster en Software Libre PAPI sobre DokuWiki PFM Área Web - Junio de 2011 PFM UOC Tutor: Francisco Javier Noguera Otero Luis Marco Giménez

Desarrollo y servicios web

Capacitación de competencias en instituciones de Educación Superior

Oracle 12c DISEÑO Y PROGRAMACIÓN

HTTP Introducción. Redes de Datos Ing. Marcelo Utard / Ing. Pablo Ronco FACULTAD DE INGENIERIA UNIVERSIDAD DE BUENOS AIRES

DISEÑO MICROCURRICULAR

Componentes de una aplicación ASP.NET

Este tipo de situaciones son solventadas a partir de las variables de sesión.

Curso: Programación con JAVA SE Estándar Edition.

Una ACL es una lista secuencial de sentencias de permiso o denegación que se aplican a direcciones IP o protocolos de capa superior.

TEMA 1.- Conceptos Generales y Entorno de Trabajo Objetivo

Elementos requeridos para crearlos (ejemplo: el compilador)

FUNDAMENTOS DE REDES CONCEPTOS DE LA CAPA DE APLICACIÓN

Curso PHP Advanced and Ajax

Define las propiedades del medio físico de transición. Un ejemplo es: CABLES, CONECTORES Y VOLTAJES.

Luis Villalta Márquez

Cada parte de su organización dispondrá de la información y la generación de informes que necesite. Las ventajas es que usted puede:

INSTITUTO TECNOLÓGICO DE SALINA CRUZ. Fundamentos De Redes. Semestre Agosto-Diciembre Reporte De Lectura

Conexión a Bases de Datos en PHP

Sesión 23. Luisa Fernanda Rincón Pérez

Microsoft SQL Server Conceptos.

Fundamentos de programación Estudia las estructuras de control y cómo definir funciones en JavaScript.

Programación páginas web con ASP.NET 3.5 (C#)

Curso Especialista Técnico Programador Web

Marcos de Desarrollo. Diseño e implementación de aplicaciones Web con.net

2.1 Multibase. Información mas detallada sobre este sistema se encuentra en [Ceri y Pelagatti 1985].

Capitulo III. Diseño del Sistema.

EMC Soporte remoto seguro para VNXe Requisitos y configuración Número de referencia Rev. 01 Mayo de 2014

Curso Online. Desarrollo Seguro en Java

Técnico Superior en Programación con Java SE Standard Edition

INSTRUCCIONES CIERRE EJERCICIO 2014

Tutorial Servicios Web

GLOSARIO. Arquitectura: Funcionamiento, estructura y diseño de una plataforma de desarrollo.

Alfredo Hidalgo Limbrick. Inteligencia de Redes de Datos

MICROSITIOS. Perfiles

PHP - II. Elaborador por: Edgar Manuel Amézquita y Sebastián González R.

Servidores Web (II) Contenidos

Documentación Técnica Conector

Anexo B. Comunicaciones entre mc y PC

MICROSOFT OUTLOOK 2010

PRACTICA CAPITULO 2 MODULO 1 PROTOCOLOS Y LA FUNCIONALIDAD DE LA CAPA DE APLICACIÓN

Eclipse. Eclipse es un armazón (workbench) sobre el que se pueden montar herramientas de (JDT, CDT, PDT, ).

Symfony. Framework para el desarrollo de aplicaciones Web con PHP

Tutorial BMS Server Studio UDP

SISTEMAS DE INFORMACIÓN II TEORÍA

Transacciones: 2PC y 3PC. Aplicaciones de Internet: HTTP/Applets, HTTP/GCI y Java Servlets

Formato para prácticas de laboratorio

PowerPoint 2010 Modificar el diseño de las diapositivas

Qué dolor le quitamos/sacamos a nuestro Cliente?

Marcos de Desarrollo. Diseño e implementación de aplicaciones Web con.net

Solución a Ejercicio de Práctica

Curso de JavaServer Faces

Práctica 1. Uso básico de servicios cliente-servidor

Formato para prácticas de laboratorio

Iniciar flujo a partir de un archivo XML

Curso de Programación PHP

GUÍA PARA LA INSTALACIÓN DE MOODLE EN UN COMPUTADOR PERSONAL QUE USA EL SISTEMA OPERATIVO MS. WINDOWS

Protección de datos de affilinet

Sistemas de Caché. Para mejorar la velocidad de carga de una web. papers. acens

Resumen. DESlock+ Guía Básica de Configuración. Requerimientos del Sistema:

II. Relación con Terceros

MAESTRO DE PHP PHP NIVEL 1

CAPITULO 9. Diseño de una Base de Datos Relacional Distribuida

MANUAL DE USUARIO PARA SOPORTE DE SINERGYHARD EN TIVOLI SERVICE REQUEST MANAGER. Enero de 2012

Transcripción:

django el curso Día 5 Parte 2

Día 5 Contenido 2 HttpRequest y HttpResponse Middleware Sesiones Señales Misc.

Día 5 Contenido 3 HttpRequest y HttpResponse Middleware Sesiones Señales Misc.

HttpRequest y HttpResponse 4 Clases Python HttpRequest: Instancias creadas por Django y pasada a nuestras vistas HttpResponse: Instancias creadas y retornadas por nuestras vistas

HttpRequest Atributos 5 Sólo lectura (excepto.session) Cadenas:.path,.method ( GET, POST ) Diccionarios:.META (cabeceras HTTP: CONTENT_*, HTTP_*, REMOTE_*,...) Dictionary-like (QueryDict, múltiples valores para la misma clave):.get,.post,.cookies,.files (valores: Instancias de UploadedFile) Instancias de dtas.clases:.user (django.contrib.auth.models.user) cuando está activa la app auth,.session (objeto sesión de django.contrib.sessions, tambien dict-like) cuando está activa la app sessions

HttpRequest Métodos 6 Métodos estándar para implementar protocolo de emulación de un dict ().is_secure() - HTTPS.is_ajax() - Cabecera HTTP HTTP_X_REQUESTED_WITH envida por librerías JS populares en requests vía XMLHttpRequest.get_full_path() - Retorna path absoluto con query string incluída.build_absolute_uri(loc) genera URL completa con esquema, host, puerto, full path y query string

HttpResponse 7 Híbrido Contenido: Cadenas en constructor o método.write() (file-like) Encabezados: Sintaxis dictionary-like Cookies: Métodos set_cookie() y.delete_cookie() resp1 = HttpResponse("Hola mundo") resp2 = HttpResponse() resp2.write( <li>linea1</li> ) resp2.write( <li>linea2</li> ) resp['content-disposition'] = 'attachment; filename=page.pdf' Sub-clases: Representan códigos de estado HTTP: HttpResponseRedirect (302), HttpResponseBadRequest (400), HttpResponseNotFound (404), HttpResponsePermanentRedirect (301), HHttpResponseServerError (500), HttpResponseForbidden (403), HHttpResponseNotModified (304)...

Día 5 Contenido 8 HttpRequest y HttpResponse Middleware Sesiones Señales Misc.

Middleware 9 Sistema de acceso al proceso de cada request/response Clases Python, sin clase base específica Se habilitan y enumeran en el setting MIDDLEWARE_CLASSES, el orden es importante MIDDLEWARE_CLASSES = ( 'django.middleware.common.commonmiddleware', 'django.contrib.sessions.middleware.sessionmiddleware', 'django.contrib.auth.middleware.authenticationmiddleware', 'django.middleware.doc.xviewmiddleware', # No existe mas ) Cuatro puntos de acceso al ciclo de vida del proceso de request/response...

Middleware 10

Middleware 11 Un middleware hace uso de esos puntos de acceso vía cuatro métodos, los valores de retorno de los misos controlan el flujo del proceso. None (continuar con proceso normal) o una HttpResponse (cortocircuito: Se obvia la invocación del resto del proceso, excepto.process_response): Antes de decidir qué vista invocar: Método.process_request(...) Antes de invocar la vista: Método.process_view(...) Luego de invocar a la vista: Método.process_response(...) - No es cortocircuitable Si la vista genera una excepción: Método.process_exception(...)

Middleware 12

Middleware Incluídos en Django 13 Common - Tiene en cuenta settings DISALLOWED_USER_AGENTS, APPEND_SLASH, PREPEND_WWW, USE_ETAGS Authentication Agrega el atributo user al HttpRequest Session (django.contrib.sessions.middleware.sessionmiddleware) Parte del framework de sesiones gzip Cache Dos componentes middleware Conditional GET Encabezados Last-Modified, If- Modified-Since, clase HttpNotModified Locale, CSRF protection, transaction, reverse proxy (cont)

Día 5 Contenido 14 HttpRequest y HttpResponse Middleware Sesiones Señales Misc.

Sesiones 15 Útiles para mantener el estado del lado del servidor ante la característica state-less del protocolo HTTP. Puede implementarse aún cuando el usuario no se ha autenticado (o sea no se está usando django.contrib.auth) Usa cookies No usa ni degrada a la query string (PHPSESSID) La solución está formada por dos partes: Un middleware (SessionMiddleware) y una aplicación Django (django.contrib.sessions, sólo cuando el backend es BD) Puede usar uno de tres backends de almacenamiento de la información de las sesiones: BD, archivos y cache. Se configura con el setting SESSION_ENGINE

Sesiones Objetos Session SessionMiddleware agrega una instancia de esta clase como el atributo.session al HttpRequest que reciben las vistas. Métodos de manejo de ciclo de vida de sesión:.set_expiry(x) (0 -> cuando se cierra el browser),.flush() (limpieza de sesión en backend, logout) Settings asociados: SESSION_EXPIRE_AT_BROWSER_CLOSE (como.set_expiry() pero a nivel global), SESSION_SAVE_EVERY_REQUEST Métodos manejo de cookies:.set_test_cookie(), test_cookie_worked(), delete_test_cookie() Settings asociados: SESSION_COOKIE_NAME, SESSION_COOKIE_DOMAIN, SESSION_COOKIE_SECURE, SESSION_COOKIE_AGE 16

Día 5 Contenido 17 HttpRequest y HttpResponse Middleware Sesiones Señales Misc.

Señales 18 Llamadas intra-proceso disparados cuando suceden ciertos eventos Son instancias de Signal. Existen algunos predefinidos disparados desde código de Django, pueden crearse los propios Se registran callbacks que son llamados por el framework en el momento adecuado, signature: mi_callback(sender, **kwargs) Pueden registrarse más de un callback con un evento determinado. la registración se hace usando el método.connect() de Signal Los callbacks pueden registrarse con eventos genéricos o asociados a (enviados por) una instancia en particular

Señales 19 Señales incluídas en Django: Ciclo de vida de modelos: pre_init, post_init, pre_save, post_save, pre_delete, post_delete, class_prepared (clase, no instancia) Ciclo de vida request/response: request_started, request_finished, got_request_exception Management: post_syncdb

Día 5 Contenido 20 HttpRequest y HttpResponse Middleware Sesiones Señales Misc.

Misc. Qué le falta a Django? (07/11/2008) 21 Validación en capa M Ticket #6845 Aggregation en el ORM Ticket #3566 (GSOC 2008) Identity map Ticket #17 SELECT de solo algunos campos en SQL Ticket #5420 SELECT FOR UPDATE en SQL Ticket #2705 Soporte de conexiones a múltiples DB ( de diferentes backends?) Streaming de información al cliente Ticket #7581 Schema evolution: Proyectos externos: dmigrations, south, django-evolution (y dbmigrations, deseb) Templates: Consistencia (manejo de espacios), thread safety, eficiencia (cont)

A.B.C Misc. Política de releases 22 A: Mayor, cambios backwards-incompatibles B: Menor, cambios backwards-compatibles con releases con el mismo A C: Patch level siempre, 100% backwards-compatible con releases con los mismos A y B Timed releases: Releases menores cada ~6 meses 1.0: 2/9/2008 1.1: Marzo 2009 1.0.1: 14/11/208 Soporte de seguridad: trunk SVN y dos releases menores previos

Misc. Tintero 23 CSRF (Cross site request forgery) Cache GeoDjango i18n/l10n Auto-escaping en templates File uploading and storage [backends] Envío de e-mail Pagination Comments Form sets, form widgets, form wizards

Ejercicio. Ticketok 24 Sistema de venta de entradas para eventos (deportivos, espectáculo,...) Diseñar modelos y relaciones con modelos obvios y adicionalmente... Los usuarios se registran en el sitio Medios de pago Socios en cadena de ventas Cada socio es dueño de uno o mas puntos de venta Un punto de venta puede ser propio (no de un socio) Locations en las que se realizan eventos (Luna Park, Orfeo,...) Zonas de butacas (ubicaciones en locations, dtos. precios)

Ejercicio. Ticketok 25 Los tickets pueden venderse por Internet o en puntos de venta En caso de venta por Internet, cada usuario tiene una dirección de cobro/entrega del ticket... Profit!

This work is licensed under the Creative Commons Attribution-Noncommercial- Share Alike 2.5 Argentina License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/2.5/ar/ or send a letter to Creative Commons, 171 Second Street, Suite 300, San Francisco, California, 94105, USA. 26