¿Aún no tienes una cuenta? Crea una ahora y accede a tus listas favoritas, tu histórico de cuentas y muchas más cosas...
Pedidos y atención al cliente
PARTICULARES: 963 392 051 - FAX: 963 615 480 / LIBRERÍAS: 963 610 048 ext. 1005 - FAX: 963 694 151
Django, el marco de trabajo para el desarrollo Web, hace esta tarea mucho más amena permitiéndole, además, ahorrar tiempo. Con Django podrá crear sitios Web complejos de forma rápida utilizando código limpio y fácil de mantener. Este libro le enseñará a utilizar en profundidad el marco de trabajo Web Django. En él encontrará los patrones más habituales de desarrollo Web y conocerá los atajos que le ayudarán con las tareas de programación más frecuentes. Aprenderá a aplicar todas las herramientas, de manera efectiva, en sus propios proyectos. Prólogo Introducción Parte I. Toma de contacto 1. Introducción a Django ¿Qué es un marco de trabajo Web? El patrón de diseño MVC La historia de Django Cómo leer este libro Conocimientos necesarios sobre programación Conocimientos necesarios sobre Python Versión requerida de Django En caso de duda A continuación 2. Instalación de Django Instalación de Python Versiones de Python Instalación Instalación de Django Instalación de la versión oficial Instalación de la versión en desarrollo Comprobar el funcionamiento de la instalación de Django Configurar una base de datos Django con PostgreSQL Django con SQLite 3 Django con MySQL Django con Oracle Uso de Django sin una base de datos Iniciar un proyecto Ejecutar el servidor de desarrollo A continuación 3. Vistas y URLconfs Su primera página en Django: Hello World Su primera vista Su primer URLconf Una nota rápida sobre errores 404 Una nota rápida sobre la raíz del sitio Cómo procesa Django una solicitud Su segunda vista: contenido dinámico URLconfs y acoplamiento débil Su tercera vista: URL dinámicas Páginas de error de Django A continuación 4. Plantillas Aspectos básicos del sistema de plantillas Uso del sistema de plantillas Creación de objetos Template Renderizar una plantilla Varios contextos con la misma plantilla Búsqueda de variables de contexto Jugando con objetos Context Etiquetas básicas de plantilla y filtros Etiquetas Filtros Filosofías y limitaciones Uso de plantillas en vistas Apertura de plantillas render_to_response() locals() Subdirectorios en get_template() La etiqueta de plantilla include Herencia de plantillas A continuación 5. Modelos La forma "tonta" de realizar consultas sobre bases de datos en vistas El patrón de desarrollo MTV (o MVC) Configuración de la base de datos Su primera aplicación Definición de modelos en Python Su primer modelo Instalación del modelo Acceso básico a datos Añadir cadenas de representación del modelo Insertar y actualizar datos Selección de objetos Filtrado de datos Obtener objetos únicos Ordenar datos Búsquedas encadenadas Dividir datos Actualizar varios objetos con una instrucción Eliminar objetos A continuación 6. El sitio de administración de Django Los paquetes django.contrib Activar la interfaz de administración Uso del sistema de administración Añadir sus modelos al sitio de administración Funcionamiento del sitio de administración Convertir un campo en opcional Convertir los campos numéricos y de fecha en opcionales Personalizar las etiquetas de campo Clases ModelAdmin personalizadas Personalizar una lista de modificaciones Personalizar formularios de edición Usuarios, grupos y permisos Cuándo y por qué hay que utilizar la interfaz de administración(y cuándo no hay que hacerlo) A continuación 7. Formularios Obtener información a partir del objeto Request Información sobre la URL Otra información sobre la solicitud Información sobre los datos enviados Un ejemplo de gestión de formularios Mejorar nuestro ejemplo de gestión de formularios Validación sencilla Crear un formulario de contacto Su primera clase Form Incluir objetos Form en vistas Modificar la forma en que se renderizan los campos Configurar una longitud máxima Configurar valores iniciales Añadir normas de validación personalizadas Especificar etiquetas Personalizar el diseño del formulario A continuación Parte II. Uso avanzado 8. Vistas y URLconf avanzados Trucos con URLconf Mejorar la eficiencia de la importación de funciones Utilizar varios prefijos de vista Configuración de URL en modo debug Utilizar grupos con nombres Funcionamiento del algoritmo de agrupado y coincidencia Proporcionar opciones extra a funciones de vista. Utilizar argumentos de vista predeterminados Vistas con formato especial Capturar texto en una URL Determinar la ubicación sobre las que el URLconf va a realizar las búsquedas Abstracciones de alto nivel de las funciones de vista Contener funciones de vista Incluir otros URLconf Funcionamiento de los parámetros capturados con include() Funcionamiento de las opciones extra del URLconf con include() A continuación 9. Plantillas avanzadas Revisión del lenguaje de plantillas Procesadores RequestContext y Context django.core_context.processors.auth django.core.context_processos.debug django.core.context_processos.i18n django.core.context_processors.request Pautas a tener en cuenta para redactar sus propios procesadores de contexto Escapado automático de código HTML Cómo desactivar el escapado automático Notas Escapado automático de literales de cadena en argumentos de filtro Carga de plantillas Ampliar el sistema de plantillas Crear una biblioteca de plantilla Escribir filtros de plantilla personalizados Escribir etiquetas de plantilla personalizadas Escribir la función de compilado Escribir el nodo de plantilla Registrar la etiqueta Configurar una variable en el contexto Parsear otra etiqueta de plantilla Parsear otra etiqueta de plantilla y guardar los contenidos Atajos para etiquetas sencillas Etiquetas de inclusión Escribir cargadores de plantilla personalizados Configurar el sistema de plantillas en modo independiente A continuación 10. Modelos avanzados Objetos relacionados Acceder a valores de claves externas Acceder a valores muchos a muchos Realizar modificaciones en un esquema de base de datos Añadir campos Eliminar campos Eliminar campos muchos a muchos Eliminar modelos Los Manager Añadir métodos de manager extra Modificar QuerySets iniciales de manager Métodos de modelo Ejecutar consultas SQL en crudo A continuación 11. Vistas genéricas Usar vistas genéricas Vistas genéricas de objetos Ampliar una vista genérica Crear contextos de plantilla "amables" Añadir contenido extra Visualizar subconjuntos de objetos Filtrado complejo con funciones de contenedor Ejecutar trabajo extra A continuación 12. Implementar Django Preparar su código para el entorno de producción Desactivar el modo debug Desactivar TEMPLATE_DEBUG Implementar una plantilla 404 Implementar una plantilla 500 Configurar alertas por error Configurar alertas por vínculos rotos Utilizar diferentes opciones de configuración en el entorno de producción DJANGO_SETTINGS_MODULE Uso de Django con Apache y mod_python Configuración básica Ejecutar varias instalaciones de Django desde la misma instancia Apache Ejecutar un servidor de desarrollo con mod_python Proporcionar archivos Django y de contenidos desde la misma instancia Apache Gestión de errores Gestionar una violación de acceso Una alternativa: mod_wsgi Uso de Django con FastCGI Introducción a FastCGI Ejecutar su servidor FastCGI Usar Django con Apache y FastCGI FastCGI y lighttpd Usar Django en un servidor compartido con Apache Ampliar la instalación Ejecución en un único servidor Separar el servidor de la base de datos Ejecución con un servidor de contenidos separado Implementar balanceado de carga y redundancia Pensar en grande Ajuste de rendimiento Nunca hay suficiente memoria RAM Desactive Keep-Alive Utilice Memcached Utilice Memcached habitualmente ??nase a la conversación A continuación Parte III. Otras características de Django 13. Generar contenido no HTML Aspectos básicos: vistas y tipos MIME Generación de contenido CSV Creación de archivos PDF Instalar ReportLab Crear su vista Archivos PDF complejos Otras posibilidades Marco de trabajo de hilos de sindicación Inicialización Un hilo sencillo Un hilo más complejo Especificar el tipo de hilo Adjuntos Lenguaje Direcciones URL Ofrecer hilos Atom y RSS a la vez Marco de trabajo de mapas de sitio Instalación Inicialización Clases Sitemap Atajos Crear un índice de mapa de sitio Hacer ping a Google A continuación 14. Sesiones, usuarios y registro Cookies Obtener y configurar cookies La bendición de las cookies Marco de trabajo de sesiones de Django Habilitar sesiones Uso de sesiones en vistas Configurar cookies de prueba Uso de sesiones fuera de vistas Cuándo se guardan las sesiones Sesiones persistentes vs. Sesiones de duración del navegador Otras opciones de sesión Usuarios y autenticación Habilitar el soporte de autenticación Objetos User Entrar y salir del sistema Limitar el acceso a los usuarios que han accedido al sistema Limitar el acceso a aquellos usuarios que pasen una prueba Gestionar usuarios, permisos y grupos Utilizar información de autenticación en plantillas Permisos, grupos y mensajes Permisos Grupos Mensajes A continuación 15. Cacheado Configuración de la caché Memcached Cacheado de base de datos Cacheado de sistema de archivos Cacheado con memoria local Falso cacheado (entornos de desarrollo) Motor de caché personalizado Argumentos CACHE_BACKEND Caché por sitio Caché por vista Especificar caché por vista en el URLconf Cacheado de fragmentos de plantilla API de caché a bajo nivel Cachés transparentes Uso de encabezados Vary Control de la caché: uso de otros encabezados Otras mejoras Orden de las clases MIDDLEWARE A continuación 16. django.contrib La biblioteca estándar de Django Sitios Escenario 1: Reutilizar datos en varios sitios Escenario 2: Almacenar el nombre del sitio/dominio en una ubicación Cómo utilizar el marco de trabajo de sitios Posibilidades del marco de trabajo de sitios CurrentSiteManager Cómo utiliza Django el marco de trabajo de sitios Páginas planas Uso de páginas planas Añadir, modificar y eliminar páginas planas Uso de plantillas de página plana Redirecciones Utilizar el marco de redirecciones Añadir, modificar y eliminar redirecciones Protección contra falsificación de petición en sitios cruzados (CSRF) Ejemplo sencillo de CSRF Ejemplo complejo de CSRF Evitar un ataque CSRF Humanizar nuestros datos apnumber intcomma intword ordinal Filtros de marcado A continuación 17. Middleware ¿Qué es el middleware? Instalación de middleware Métodos middleware Inicializador: _init_(self) Preprocesador de solicitud: process_request(self, request) Preprocesador de vista: process_view(self, request, view, args, kwargs) Postprocesador de respuesta: process_response(self, request, response) Postprocesador de errores: process_exception(self, request, exception) Componentes middleware de serie Soporte middleware de autenticación Middleware "común" Middleware de compresión Middleware condicional GET Soporte de proxy inverso (middleware X-Forwarded-For) Middleware para el soporte de sesiones. Middleware para caché de sitio Middleware de transacciones A continuación 18. Integración con aplicaciones y bases de datos heredadas Integración con una base de datos heredada Uso de inspectdb Limpiar los modelos generados Integración con un sistema de autenticación Especificar motores de autenticación Crear un motor de autenticación Integración con aplicaciones Web heredadas A continuación 19. Internacionalización Cómo especificar una cadena de traducción En código Python En código de plantilla Trabajar con objetos de traducción parcial Cómo crear archivos de idioma Archivos de mensaje Compilar archivos de mensaje Cómo detecta Django las preferencias de idioma Usar traducciones en sus propios proyectos La vista de redirección set_language Traducciones y JavaScript La vista javascript_catalog Utilizar el catálogo de traducción JavaScript Creación de catálogos de traducción JavaScript Notas para los usuarios familiarizados con gettext gettext en Windows A continuación 20. Seguridad La seguridad en la Web Inyección SQL La solución Cross-Site Scripting (XSS) La solución Falsificación de petición en sitios cruzados (CSRF) Falsificación de sesión / Hijacking La solución Inyección de encabezados de correo electrónico La solución Ataque Directory Traversal La solución Mensajes de error con información confidencial La solución Un último comentario sobre seguridad A continuación Parte IV. Apéndices Apéndice A. Referencia para definición de modelos Campos AutoField BooleanField CharField CommaSeparatedIntegerField DateField DateTimeField DecimalField EmailField FileField FilePathField FloatField ImageField IntegerField IPAddressField NullBooleanField PositiveIntegerField PositiveSmallIntegerField SlugField SmallIntegerField TextField TimeField URLField XMLField Opciones universales de campo null blank choices db_column dn_index db_tablespace default editable help_text primary_key unique unique_for_date unique_for_month unique_for_year verbose_name Relaciones ForeignKey ManyToManyField OneToOneField Opciones de metadatos de modelo abstract db_table db_tablespace get_latest_by managed ordering proxy unique_together verbose_name verbose_name_plural Apéndice B. Referencia sobre la API de bases de datos Creación de objetos ¿Qué sucede al guardar un objeto? Claves primarias con autoincremento Guardar los cambios realizados a un objeto Obtener objetos Cacheado y QuerySets Filtrado de objetos Encadenado de filtros Limitar un QuerySet Métodos de consulta que devuelven QuerySets nuevos Métodos QuerySet que no devuelven QuerySets Búsquedas de campo exact iexact contains icontains gt, gte, lt y lte in startswith istartwith endswith y iendswith range year, month y day isnull search Atajo de búsqueda pk Búsquedas complejas con objetos Q Objetos relacionados Búsquedas que incluyen relaciones Relaciones de clave externa Relaciones "inversas" de clave externa Relaciones muchos a muchos Consultas sobre objetos relacionados Eliminar objetos Atajos get_object_or_404() get_list_or_404() Utilizar código SQL en crudo Apéndice C. Referencia sobre vistas genéricas Argumentos comunes para vistas genéricas Vistas genéricas "sencillas" Renderizar una plantilla Redirección a otra URL Vistas genéricas de lista/detalle Listas de objetos Vistas de detalle Vistas genéricas basadas en fechas ??ndice de archivos Archivos por año Archivos mensuales Archivos semanales Archivos diarios Archivos del día en que nos encontramos Páginas de detalle basadas en fecha Apéndice D. Opciones de configuración Aspectos básicos de los archivos de configuración Opciones de configuración por defecto Consultar qué opciones se han modificado Uso de opciones en código Python Modificación de las opciones durante el tiempo de ejecución Seguridad Crear nuestras propias opciones Designación de las opciones: DJANGO_SETTINGS_MODULE La utilidad django-admin.py En el servidor (mod_python) Utilizar opciones sin configurar DJANGO_SETTINGS_MODULE Opciones por defecto personalizadas Uso obligatorio de configure() o DJANGO_SETTINGS_MODULE Opciones disponibles ABSOLUTE_URL_OVERRIDES ADMIN_MEDIA_PREFIX ADMINS ALLOWED_INCLUDE_ROOTS APPEND_SLASH CACHE_BACKEND CACHE_MIDDLEWARE_KEY_PREFIX DATABASE ENGINE DATABASE_HOST DATABASE_NAME DATABASE_OPTIONS DATABASE_PASSWORD DATABASE_PORT DATABASE_USER DATE_FORMAT DATETIME_FORMAT DEBUG DEFAULT_CHARTSET DEFAULT_CONTENT_TYPE DEFAULT_FROM_EMAIL DISALLOWED_USER_AGENTS EMAIL_HOST EMAIL_HOST_USER EMAIL_PORT EMAIL_SUBJECT_PREFIX FIXTURE_DIRS IGNORABLE_404_ENDS IGNORABLE_404_STARTS INSTALLED_APPS LANGUAGE_CODE LANGUAGES MANAGERS MEDIA_ROOT MEDIA_URL MIDDLEWARE_CLASSES MONTH_DAY_FORMAT PREPEND_WWW ROOT_URLCONF SECRET_KEY SEND_BROKEN_LINK_EMAILS SERIALIZATION_MODULES SERVER_MAIL SESSION_COOKIE_AGE SESSION_COOKIE_DOMAIN SESSION_COOKIE_NAME SESSION_COOKIE_SECURE SESSION_EXPIRE_AT_BROWSER_CLOSE SESSION_SAVE_EVERY_REQUEST SITE ID TEMPLATE_CONTEXT_PROCESSORS TEMPLATE_DEBUG TEMPLATE_DIRS TEMPLATE_LOADERS TEMPLATE_STRING_IF_INVALID TEST_DATABASE_NAME TEST_RUNNER TIME_FORMAT TIME_ZONE URL_VALIDATOR_USER_AGENT USE_ETAGS USE_I18N YEAR_MONTH_FORMAT Apéndice E. Filtros y etiquetas de plantilla de serie Referencia sobre etiquetas de serie autoescape block comment cycle debug extends filter firstof for if ifchanged ifequal ifnotequal include load now regroup spaceless ssi templatetag url widthratio with Referencia sobre filtros de serie add addslashes capfirst center cut date default default_if_none dictsort dictsortreversed divisibleby escape escapejs filesizeformat first fix_ampersands floatformat force_escape get_digit iriencode join last lenght lenght_is linebreaks linenumbers ljust lowercase make_list phone2numeric pluralize pprint random removetags right safe safeseq slice slugify stringformat striptags time timesince timeuntil title truncatewords truncatewords_html unordered_list upper urlencode urlize urlizetrunc wordcount wordwrap yesno Apéndice F. La utilidad django-admin Uso Obtener ayuda durante el tiempo de ejecución Nombres de aplicación Mostrar la versión en uso Mostrar contenidos de depurado Subcomandos disponibles cleanup compilemessages --locale createcachetable createsuperuser dbshell diffsettings dumpdata flush inspectdb loaddata makemessages reset runfcgi [options] runserver shell sql sqlall sqlclear sqlcustom sqlflush sqlindexes sqlreset sqlsequencereset startapp startproject syncdb test testserver validate Opciones por defecto --pythonpath --settings --traceback --verbosity Elementos extra Coloreado de sintaxis Autocompletado en Bash Apéndice G. Objetos de respuesta y de solicitud HttpRequest Objetos QueryDict Un ejemplo completo HttpResponse Creación de un HttpResponse Configuración de encabezados Subclases HttpResponse Mostrar errores Personalizar la vista 404 (no encontrado) Personalización de la vista 500 (error de servidor) ??ndice alfabético