Оглавление
Antonio Melé. Django 2
Django 2
Acerca del autor
Acerca de los traductores
Contenido
Prefacio
A quién va dirigido este libro
Cómo aprovechar este libro
Descarga del código asociado al libro
1. Crear un blog
Instalar Django
Crear un entorno de desarrollo Python
Instalar Django mediante pip
Crear el primer proyecto
Arrancar el servidor de desarrollo
Configuración del proyecto
Proyectos y aplicaciones
Crear una aplicación
Esquema de datos del blog
Activar la aplicación
Crear y aplicar migraciones
Sitio de administración para los modelos
Crear un superusuario
El sitio de administración de Django
Añadir modelos al sitio de administración
Personalizar la vista de modelos
Trabajando con QuerySets y Managers
Crear objetos
Actualizar objetos
Recuperar objetos
Valiéndose del método filter()
Uso de exclude()
Uso de order_by()
Eliminar objetos
Cuándo se evalúan los QuerySets
Crear gestores de modelos
Elaborar vistas de detalle y listado
Creación de vistas de detalle y listado
Añadir patrones de URL para las vistas
Crear plantillas para vistas
Añadir paginación
Usar vistas basadas en clase
Resumen
2. Funciones avanzadas del blog
Compartir artículos por email
Crear formularios en Django
Usar formularios en vistas
Enviar emails con Django
Renderizar formularios en plantillas
Crear un sistema de comentarios
Crear formularios de un modelo
Funcionamiento de ModelForms en vistas
Añadir comentarios a la plantilla de detalle de artículos
Añadir funcionalidad de etiquetado
Recuperar artículos por similitud
Resumen
3. Extensiones para el blog
Crear filtros y etiquetas de plantilla personalizados
Crear etiquetas de plantilla personalizadas
Crear filtros de plantilla personalizados
Añadir un mapa de sitio
Sistema de feeds
Crear un sistema de búsqueda para el blog
Instalar PostgreSQL
Búsquedas sencillas
Búsqueda sobre múltiples campos
Construir una vista de búsqueda
Lematización y resultados por semejanza
Orden de relevancia en búsquedas
Búsqueda por similitud de trigrama
Otros motores de búsqueda de texto completo
Resumen
4. Construir una aplicación social
Crear un proyecto de red social
Iniciar el proyecto de red social
Utilizar el sistema de autenticación de Django
Crear una vista de inicio de sesión
Utilizar las vistas de autenticación de Django
Vistas para iniciar y cerrar sesión
Vistas para modificar la contraseña
Vistas para restaurar la contraseña
Registro y perfiles de usuario
Registro de usuarios
Extender el modelo de usuario
Usar un modelo de usuario personalizado
Utilizar el sistema de mensajes
Crear un backend de autenticación personalizado
Añadir autenticación social a la web
Autenticación mediante Facebook
Autenticación mediante Twitter
Autenticación mediante Google
Resumen
5. Compartir contenido en su web
Crear un sitio web para compartir imágenes
Construir el modelo imagen
Crear relaciones muchos a muchos
Registrar el modelo imagen en el portal de administración
Enviar contenido desde otros sitios web
Validar campos del formulario
Sobrescribir el método save() de un ModelForm
Elaborar un bookmarklet con jQuery
Crear una vista de detalle para las imágenes
Crear miniaturas de imágenes utilizando sorl-thumbnail
Añadir acciones AJAX con jQuery
Cargar jQuery
Falsificación de petición en sitios cruzados con AJAX
Realizar peticiones AJAX con jQuery
Crear decoradores para vistas
Añadir paginación AJAX a listados
Resumen
6. Seguimiento de acciones de usuario
Construir un sistema de seguidores
Crear relaciones muchos a muchos a través de un modelo intermedio
Crear vistas de listado y detalle para perfiles de usuario
Construir una vista AJAX para seguir usuarios
Construir un feed de actividad
Utilizar el sistema de contenttypes
Añadir relaciones genéricas a modelos
Evitar registrar acciones duplicadas
Añadir acciones de usuario al registro de actividad
Mostrar el registro de actividad
Optimizar QuerySets que involucran objetos relacionados
Utilizar select_related()
Utilizar prefetch_related()
Crear plantillas para acciones
Usar señales para desnormalizar conteos
Trabajar con señales
Clases de configuración de aplicaciones
Usar Redis para contabilizar visualizaciones
Instalar Redis
Usar Redis con Python
Almacenamiento total de visualizaciones en Redis
Almacenar un ranking en Redis
Siguientes pasos con Redis
Resumen
7. Construir una tienda online
Crear un proyecto de tienda online
Modelo del catálogo de productos
Registrar el catálogo en el panel de administración
Construir vistas de catálogo
Crear plantillas de catálogo
Construir un carro de la compra
Sistema de sesiones en Django
Configuración de sesión
Expiración de sesión
Almacenar carros de compra en sesión
Vistas para el carro de la compra
Añadir elementos al carro
Construir una plantilla para mostrar el carro
Añadir productos al carro
Modificar la cantidad de producto en el carro
Crear un procesador de contexto para el carro actual
Registrar órdenes de clientes
Crear modelo de órdenes
Añadir los modelos de órdenes al panel de administración
Crear órdenes de clientes
Ejecutar tareas asíncronas con Celery
Instalar Celery
Instalar RabbitMQ
Añadir Celery al proyecto
Añadir tareas asíncronas a su aplicación
Monitorizar Celery
Resumen
8. Gestión de pagos y pedidos
Integrar una pasarela de pago
Crear una cuenta de prueba en Braintree
Instalar el módulo Python de Braintree
Integrar la pasarela de pago
Integrar Braintree con Hosted Fields
Probar los pagos
Desplegando en producción
Exportar órdenes de pedido a CSV
Añadir acciones en el panel de administración
Personalizar vistas en el panel de administración
Generar facturas en PDF dinámicamente
Instalar WeasyPrint
Crear una plantilla PDF
Renderizar ficheros PDF
Enviar ficheros PDF por email
Resumen
9. Extensión de tienda online
Creación de un sistema de cupones
Modelos para cupones
Aplicar un cupón al carro de la compra
Aplicar cupones a órdenes
Añadir internacionalización y localización
Internacionalización con Django
Configuración de internacionalización y localización
Determinar el idioma en Django
Preparar el proyecto para internacionalización
Traducir código Python
Traducción estándar
Traducciones perezosas
Traducciones incluyendo variables
Traducción de plurales
Traducción de código
Traducir plantillas
La etiqueta de plantilla {% trans %}
La etiqueta de plantilla {% blocktrans %}
Traducir plantillas de la tienda
Rosetta: Interfaz de traducción
Traducciones perezosas
Patrones de URL para internacionalización
Añadir un prefijo de idioma al patrón de URL
Traducir patrones de URL
Permitir cambio de idioma a los usuarios
Traducción de modelos con django-parler
Instalar django-parler
Traducir campos de modelo
Integrar traducciones en el panel de administración
Crear migraciones para traducciones de modelos
Adaptar vistas para traducciones
Formato localizado
Validar campos de formulario con django-localflavor
Construir un sistema de recomendación
Recomendar productos en base a compras anteriores
Resumen
10. Construir una plataforma e-learning
Configurar el proyecto e-learning
Construir el modelo curso
Registrar los modelos en el sitio de administración
Usar fixtures para crear datos iniciales para los modelos
Utilizar modelos para contenido diverso
Utilizar herencia de modelos
Modelos abstractos
Herencia multitabla de modelos
Modelos Proxy
Crear los modelos de contenido
Campos de modelo personalizados
Añadir orden a objetos de módulos y contenidos
Crear un CMS
Añadir un sistema de autenticación
Crear las plantillas de autenticación
Crear vistas basadas en clases
Utilizar mixins para las vistas basadas en clases
Trabajar con grupos y permisos
Restringir el acceso a las vistas basadas en clases
Gestionar módulos y contenido de los cursos
Utilizar conjuntos de formularios para los módulos del curso
Añadir contenido a los módulos de un curso
Gestionar módulos y contenidos
Reordenar módulos y contenidos
Utilizar mixins de django-braces
Resumen
11. Renderizar y cachear contenido
Mostrar cursos
Añadir el registro de estudiantes
Crear una vista de registro para estudiantes
Inscribir estudiantes en cursos
Acceder al contenido del curso
Renderizar diferentes tipos de contenido
Utilizar el sistema de caché
Sistemas de caché disponibles
Instalar Memcached
Configurar la caché
Añadir Memcached al proyecto
Monitorizar Memcached
Niveles de caché
Usar la API de caché de bajo nivel
Cachear basándose en datos dinámicos
Cachear fragmentos de la plantilla
Cachear vistas
Usar caché a nivel de sitio web
Resumen
12. Construir una API
Construir una API RESTful
Instalar Django REST framework
Definir serializadores
Entender los parsers y renderers
Construir vistas de listado y detalle
Crear serializadores anidados
Construir vistas personalizadas
Gestionar la autenticación de usuarios
Añadir permisos a vistas
Crear conjuntos de vistas y enrutadores
Añadir acciones adicionales a conjuntos de vistas
Crear permisos personalizados
Serializar contenidos de cursos
Resumen
13. Lanzamiento en producción
Crear un entorno de producción
Configuraciones para distintos entornos
Utilizar PostgreSQL
Comprobar su proyecto
Servir Django mediante WSGI
Instalar uWSGI
Configurar uWSGI
Instalar NGINX
El entorno de producción
Configurar NGINX
Servir archivos estáticos y media
Securizar conexiones con SSL
Crear un certificado SSL
Configurar NGINX para utilizar SSL
Configurar su proyecto con SSL
Crear un middleware a medida
Crear un middleware para gestionar subdominios
Servir múltiples subdominios con NGINX
Comandos de administración personalizados
Resumen