Prefacio .. xvii
1. Crear un blog
. 1
Instalar Django
1
Crear un entorno de desarrollo Python
.. 2
Instalar Django mediante pip
.. 4
Crear el primer proyecto
4
Arrancar el servidor de desarrollo
. 6
Configuración del proyecto
.. 8
Proyecto y aplicaciones
.. 9
Crear una aplicación
.. 10
Esquema de datos del blog
. 10
Activar la aplicación
.. 13
Crear y activar migraciones
14
Sitio de administración para los modelos
.. 15
Crear un superusuario
16
El sitio de administración de Django
16
Añadir modelos al sitio de administración
17
Personalizar la vista de modelos
. 19
Trabajando con QuerySets y Managers
.. 21
Crear objetos
.. 21
Actualizar objetos
23
Recuperar objetos
23
Valiéndose del método filter()
24
Uso de exclude()
24
Uso de order_by()
. 24
Eliminar objetos
25
Cuándo se evalúan los QuerySets
.. 25
Crear gestores de modelos
.. 25
Elaborar listas de detalle y listado
.. 26
Creación de vistas de detalle y listado
. 27
Añadir patrones de URL para las vistas
.. 28
Crear plantillas para vistas
. 30
Añadir paginación
.. 34
Usar vistas basadas en clase
.. 36
Resumen
. 38
2. Funciones avanzadas del blog
. 39
Compartir artículos por email
.. 39
Crear formularios en Django
. 40
Usar formularios en vistas
. 41
Enviar emails con Django
.. 43
Renderizar formularios en plantillas
. 46
Crear un sistema de comentarios
50
Crear formularios de un modelo
. 52
Funcionamiento de ModelForms en vistas
53
Añadir comentarios a la plantilla de detalle de artículos
. 55
Añadir funcionalidad de etiquetado
.. 58
Recuperar artículos por similitud
64
Resumen
. 67
3. Extensiones para el blog
69
Crear filtros y etiquetas de plantilla personalizados
. 69
Crear etiquetas de plantilla personalizadas
69
Crear filtros de plantilla personalizados
.. 75
Añadir un mapa de sitio
.. 78
Sistema de feeds
.. 81
Crear un sistema de búsqueda para el blog
84
Instalar PostgreSQL
85
Búsquedas sencillas
.. 86
Búsqueda sobre múltiples campos
. 87
Construir una vista de búsqueda
. 87
Lematización y resultados por semejanza
.. 90
Orden de relevancia en búsquedas
. 91
Búsquedas por similitud de trigrama
. 92
Otros motores de búsqueda de texto completo
93
Resumen
. 93
4. Construir una aplicación social
.. 95
Crear un proyecto de red social
.. 95
Iniciar el proyecto de red social
96
Utilizar el sistema de autenticación de Django
97
Crear una vista de inicio de sesión
. 98
Utilizar las vistas de autenticación de Django
.. 104
Vistas para iniciar y cerrar sesión
105
Vistas para modificar la contraseña
111
Vistas para restaurar la contraseña
.. 114
Registro y perfiles de usuario
119
Registro de usuarios
119
Extender el modelo de usuario
.. 123
Usar un modelo de usuario personalizado
. 130
Utilizar el sistema de mensajes
. 130
Crear un backend de autenticación personalizado
.. 133
Añadir autenticación social a la web
.. 136
Autenticación mediante Facebook
.. 138
Autenticación mediante Twitter
143
Autenticación mediante Google
145
Resumen
.. 148
5. Compartir contenido en su web
149
Crear un sitio web para compartir imágenes
.. 150
Construir el modelo imagen
150
Crear relaciones muchos a muchos
152
Registrar el modelo imagen en el portal de administración
153
Enviar contenido desde otros sitios web
.. 154
Validar campos de formulario
155
Sobrescribir el método save() de un ModelForm
. 156
Elaborar un bookmarklet con jQuery
. 160
Crear una vista de detalle para las imágenes
.. 170
Crear miniatura de imágenes utilizando sorl-thumbnail
.. 173
Añadir acciones AJAX con jQuery
. 174
Cargar jQuery
176
Falsificación de petición en sitios cruzados con AJAX
177
Realizar peticiones AJAX con jQuery
.. 179
Crear decorados para vistas
183
Añadir paginación AJAX a listados
184
Resumen
.. 189
6. Seguimiento de acciones de usuario
..191
Construir un sistema de seguidores
. 191
Crear relaciones muchos a muchos a través de un model intermedio
192
Crear vistas de listado y detalle para perfiles de usuario
. 196
Construir una vista AJAX para seguir usuarios
201
Construir un feed de actividad
.. 203
Utilizar el sistema de contenttypes
.. 204
Añadir relaciones genéricas a modelos
. 206
Evitar registrar acciones duplicadas
209
Añadir acciones de usuario al registro de actividad
211
Mostrar el registro de actividad
212
Optimizar QuerySets que involucran objetos relacionados
213
Utilizar select_related()
213
Utilizar prefetch_related()
.. 214
Crear plantillas parea acciones
.. 214
Usar señales para desnormalizar conteos
. 216
Trabajar con señales
217
Clases de configuración de aplicaciones
.. 220
Usar Redis para contabilizar visualizaciones
222
Instalar Redis
. 222
Usar Redis con Python
.. 224
Almacenamiento total de visualizaciones en Redis
226
Almacenar un ranking en Redis
228
Siguientes pasos con Redis
. 230
Resumen
.. 231
7. Construir una tienda online
233
Crear un proyecto de tienda online
. 233
Modelo de catálogo de productos
234
Registrar el catálogo en el panel de administración
237
Construir vistas de catálogo
. 239
Crear plantillas de catálogo
. 241
Construir un carro de la compra
246
Sistema de sesiones en Django
. 246
Configuración de sesión
247
Expiración de sesión
.. 249
Almacenar carros de compra en sesión
. 249
Vistas para el carro de la compra
. 254
Añadir elementos al carro
.. 254
Construir una plantilla para mostrar el carro
257
Añadir productos al carro
.. 259
Modificar la cantidad de producto en el carro
. 260
Crear un procesador de contexto para el carro actual
262
Registrar órdenes de clientes
. 264
Crear modelo de órdenes
. 264
Añadir los modelos de órdenes al panel de administración
266
Crear órdenes de clientes
. 267
Ejecutar tareas asíncronas con Celery
272
Instalar Celery
272
Instalar RabbitMQ
.. 273
Añadir Celery al proyecto
273
Añadir tareas asíncronas a su aplicación
.. 275
Monitorizar Celery
.. 277
Resumen
.. 277
8. Gestión de pagos y pedidos
279
Integrar una pasarela de pago
279
Crear una cuenta de prueba en Braintree
. 280
Instalar el módulo Python de Braintree
. 281
Integrar la pasarela de pago
282
Integrar Braintree con Hosted Fields
284
Probar los pagos
291
Desplegando en producción
293
Exportar órdenes de pedido a CSV
. 294
Añadir acciones en el panel de administración
. 294
Personalizar vistas en el panel de administración
297
Generar facturas en PDF dinámicamente
. 302
Instalar WeasyPrint
.. 303
Crear una plantilla PDF
303
Renderizar ficheros PDF
. 304
Enviar ficheros PDF por email
308
Resumen
.. 310
9. Extensión de tienda online
.311
Creación de un sistema de cupones
. 311
Modelos para cupones
312
Aplicar un cupón al carro de la compra
314
Aplicar cupones a órdenes
.. 322
Añadir internacionalización y localización
. 324
Internacionalización con Django
. 325
Configuración de internacionalización y localización
. 325
Determinar el idioma en Django
. 326
Preparar el proyecto para internacionalización
. 327
Traducir código Python
. 329
Traducción estándar
.. 329
Traducciones perezosas
.. 329
Traducciones incluyendo variables
329
Traducción de plurales
. 330
Traducción de código
.. 330
Traducir plantillas
335
La etiqueta de plantilla {% trans %}
335
La etiqueta de plantilla {% blocktrans %}
. 336
Traducir plantillas de la tienda
. 337
Rosetta: Interfaz de traducción
. 340
Traducciones perezosas
343
Patrones de URL para internacionalización
344
Añadir un prefijo de idioma al patrón de URL
344
Traducir patrones de URL
. 345
Permitir cambio de idioma a los usuarios
347
Traducción de modelos con django-parler
.. 348
Instalar django-parler
349
Traducir campos de modelo
.. 350
Integrar traducciones en el panel de administración
. 352
Crear migraciones para traducciones de modelos
.. 353
Adaptar vista para traducciones
.. 355
Formato localizado
.. 358
Validar campos de formulario con django-localflavor
. 359
Crear un sistema de recomendación
360
Recomendar productos en base a compras anteriores
361
Resumen
.. 370
10. Construir una plataforma e-learning
..371
Configurar el proyecto e-learning
371
Construir el modelo curso
373
Registrar los modelos en el sitio de administración
375
Usar fixtures para crear datos iniciales para los modelos
376
Utilizar modelos para contenido diverso
. 379
Utilizar herencia de modelos
. 380
Modelos abstractos
381
Herencia multitabla de modelos
. 381
Modelos Proxy
. 382
Crear los modelos de contenido
383
Campos de modelo personalizados
. 385
Añadir orden a objetos de módulos y contenidos
388
Crear un CMS
393
Añadir un sistema de autenticación
. 393
Crear las plantillas de autenticación
393
Crear vistas basadas en clases
. 397
Utilizar mixins para las vistas basadas en clases
. 397
Trabajar con grupos y permisos
400
Restringir el acceso a las vistas basadas en clases
. 402
Gestionar módulos y contenido de los cursos
408
Utilizar conjuntos de formularios para los módulos del curso
408
Añadir contenido a los módulos de un curso
. 414
Gestionar módulos y contenidos
.. 420
Reordenar módulos y contenidos
. 425
Utilizar mixins de django-braces
.. 425
Resumen
.. 430
11. Renderizar y cachear contenido
431
Mostrar cursos
431
Añadir el registro de estudiantes
.. 437
Crear una vista de registro para estudiantes
437
Inscribir estudiantes en cursos
. 440
Acceder al contenido del curso
. 443
Renderizar diferentes tipos de contenido
. 447
Utilizar el sistema de caché
. 451
Sistemas de caché disponibles
.. 452
Instalar Memcached
452
Configurar la caché
. 453
Añadir Memcached al proyecto
454
Monitorizar Memcached
. 454
Niveles de caché
.. 455
Usar la API de caché de bajo nivel
. 456
Cachear basándose en datos dinámicos
.. 459
Cachear fragmentos de plantilla
460
Cachear vistas
461
Usar caché a nivel de sitio web
. 462
Resumen
.. 463
12. Construir una API
.465
Construir una API RESTful
465
Instalar Django REST framework
466
Definir serializadores
. 467
Entender los parsers y renderers
.. 468
Construir vistas de listado y detalle
470
Crear serializadores anidados
. 472
Crear vistas personalizadas
. 474
Gestionar la autenticación de usuarios
.. 475
Añadir permisos a vistas
.. 477
Crear conjuntos de vistas y enrutadores
479
Añadir acciones adicionales a conjuntos de vistas
.. 480
Crear permisos personalizados
.. 481
Serializar contenidos de cursos
. 482
Resumen .. 485
13. Lanzamiento en producción
487
Crear un entorno de producción
487
Configuración para distintos entornos
.. 487
Utilizar PostgreSQL
491
Comprobar su proyecto
. 492
Servir Django mediante WSGI
. 492
Instalar uWSGI
. 493
Configurar uWSGI
.. 493
Instalar NGINX
. 496
El entorno de producción
. 496
Configurar NGINX
. 497
Servir archivos estáticos y media
. 499
Securizar conexiones con SSL
.. 500
Crear un certificado SSL
. 500
Configurar NGINX para utilizar SSL
.. 501
Configurar su proyecto con SSL
. 503
Crear un middleware a medida
503
Crear un middleware para gestionar subdominios
. 505
Servir múltiples dominios con NGINX
. 507
Comandos de administración personalizados
507
Resumen .. 511
Descubra el proceso completo para desarrollar aplicaciones web profesionales con Django. Este libro le guiará a través de la creación de cuatro proyectos prácticos con Django para saber cómo resolver problemas comunes e implementar las mejores prácticas de desarrollo.
A lo largo de la lectura aprenderá a construir una aplicación blog, un sitio web social para compartir imágenes, una tienda online y una plataforma e-learning. El libro no solo trata el desarrollo de aplicaciones web con Django, sino también cómo mejorar la experiencia de usuario mediante AJAX y JavaScript, integrar otras tecnologías como Redis y Celery, así como crear APIs REST para exponer servicios a terceros. Al finalizar el libro, dispondrá de un conocimiento profundo sobre cómo construir aplicaciones web avanzadas con Django....