Django 2
Django 2
Páginas:530
Edición:1
Fecha de publicación: 25/10/2019
ISBN:9788426727480
Formato:17x24 cms
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.
Contenidos del libro:
Crear proyectos web profesionales con Django
Utilizar Django con otras tecnologías como Redis y Celery
Desarrollar aplicaciones Django reutilizables
Crear funcionalidades avanzadas, optimizar código y utilizar la caché
Añadir internacionalización a proyectos Django
Mejorar la experiencia de usuario utilizando JavaScript y AJAX
Añadir funcionalidades sociales a los proyectos
Construir APIs REST para exponer funcionalidades a terceros
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
Novedades en Editoriales Libro%
Motivos
por Blatt & Ríos.
Motivos es el único libro en prosa de José María Eguren. Es una recopilación...
Cuadernos de Vorónezh
por Blatt & Ríos.
Este libro es un milagro, y también el último escrito por Ósip Mandelstam, uno de los...
Nomadismo por mi país
por Blatt & Ríos.
Nomadismo por mi país es el diario de los talleres de poesía de Cecilia Pavón...
Presentación de Rodolfo Fogwill. Una monografía
por Blatt & Ríos.
Presentación de Rodolfo Fogwill. Una monografía es un enorme trabajo crítico...