Kitabı oxu: «Django 2»

Şrift:

Django 2


Django 2

Antonio Melé


Copyright © Packt Publishing 2018. First published in the English language under the title Django 2 by Example – (9781788472487).

Primera edición original publicada en inglés por Packt Publishing Ltd. con el título: Django 2 by Example, © 2018 Antonio Melé

Título de la edición en español: Django 2

Primera edición en español, año 2020

© 2020 MARCOMBO, S.L.

www.marcombo.com

Traducción: Aitor Ruiz Fajardo y Jaime Fernández Martín

Correctora: Nuria Barroso

Directora de producción: M.a Rosa Castillo

«Cualquier forma de reproducción, distribución, comunicación pública o transformación de esta obra solo puede ser realizada con la autorización de sus titulares, salvo excepción prevista por la ley. Diríjase a CEDRO (Centro Español de Derechos Reprográficos, www.cedro.org) si necesita fotocopiar o escanear algún fragmento de esta obra».

ISBN: 978-84-267-2866-1

Producción del ebook: booqlab.com

Para mi hermana

Acerca del autor

Antonio Melé es CTO de Exo Investing y fundador de Zenx IT. Antonio ha desarrollado proyectos Django desde 2006 para clientes de distintas industrias. También ha trabajado como CTO y consultor de tecnología para múltiples startups y ha gestionado equipos de desarrollo tecnológico para negocios digitales. Antonio es ingeniero superior en informática por la Universidad Pontificia Comillas. Su padre le inspiró su pasión por los ordenadores y la programación.

Acerca de los traductores

Aitor Ruiz Fajardo es Senior Software Development Engineer en Voysis en Dublín. Aitor ha trabajado principalmente en el desarrollo de arquitecturas y aplicaciones Java en proyectos para múltiples empresas en distintos sectores. Entusiasta del software y la gestión desde bien pequeño, Aitor es ingeniero superior en informática por la Universidad Carlos III de Madrid.

Jaime Fernández Martín es un consultor digital especializado en la implantación de software para negocios. Lleva trabajando con Python desde hace más de 10 años y ha sido coorganizador de Python-Madrid. Ha trabajado en diferentes sectores como: biotecnología, aeronáutica, telecomunicaciones, energía y financiero, aplicando la tecnología como medio para mejorar los procesos de negocio. Jaime es ingeniero informático por la Universidad Politécnica de Madrid, con un máster en inteligencia artificial por la misma universidad, y un MBA por CESMA Business School.

Contenido

Prefacio

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

Proyecto y aplicaciones

Crear una aplicación

Esquema de datos del blog

Activar la aplicación

Crear y activar 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 listas 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úsquedas 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 de formulario

Sobrescribir el método save() de un ModelForm

Elaborar un bookmarklet con jQuery

Crear una vista de detalle para las imágenes

Crear miniatura 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 decorados 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 model 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 parea 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 de 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 vista para traducciones

Formato localizado

Validar campos de formulario con django-localflavor

Crear 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 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

Crear 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

Configuración 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 dominios con NGINX

Comandos de administración personalizados

Resumen

Prefacio

Django es un potente framework web escrito en Python que fomenta un desarrollo rápido y un diseño limpio y pragmático, a la par que ofrece una curva de aprendizaje relativamente suave, lo que lo hace atractivo tanto para programadores novatos como expertos.

Este libro le guiará a través de todo el proceso del desarrollo de aplicaciones web profesionales con Django. El libro no solo cubre los aspectos más relevantes del framework, sino que también muestra cómo integrar otras tecnologías populares en proyectos Django.

Este volumen le enseñará a crear aplicaciones reales, solucionar problemas comunes e implementar las mejores prácticas mediante un enfoque paso a paso fácil de seguir.

Después de leer este libro sabrá cómo funciona Django y cómo utilizarlo para elaborar aplicaciones web prácticas con funcionalidades avanzadas.

A quién va dirigido este libro

Este libro va dirigido a programadores con conocimientos de Python que quieren aprender Django de una forma práctica. Tanto si Django es un framework nuevo para usted, como si ha trabajado con él pero quiere dominarlo, este libro es el más adecuado para usted. Le ayudará a dominar las funciones más relevantes del framework creando proyectos completos desde cero. Para leerlo es necesario estar familiarizado con conceptos de programación y tener un conocimiento básico de Python, HTML y JavaScript.

Cómo aprovechar este libro

Para sacar el máximo rendimiento a este libro, se recomienda tener un buen conocimiento de Python y conocimientos básicos de HTML y JavaScript. Antes de adentrarse en sus páginas se recomienda leer las partes 1 a 3 del tutorial de la documentación oficial de Django en https://docs.djangoproject.com/es/2.0/intro/tutorial01/.

Descarga del código asociado al libro

En la parte inferior de la primera página del libro encontrará el código de acceso que le permitirá acceder de forma gratuita a los contenidos adicionales en www.marcombo.info.

1
Crear un blog

Con este libro aprenderá a desarrollar proyectos Django, listos para su funcionamiento en producción. En caso de que aún no haya instalado Django, aprenderá cómo hacerlo en la primera parte de este capítulo. En este también se verá cómo crear una sencilla aplicación de blog con Django. El propósito principal de este capítulo es tener una visión general del framework, comprender cómo interactúan los diferentes componentes entre sí y obtener las habilidades necesarias para crear un proyecto Django con funcionalidades sencillas. Este capítulo le guiará en la creación de un proyecto Django completo sin entrar en detalle en cada paso. Los diferentes componentes utilizados en este capítulo se describen en los siguientes capítulos.

Este capítulo trata los siguientes puntos:

• Instalar Django y crear un primer proyecto.

• Diseñar modelos de datos y generar migraciones.

• Crear un sitio de administración para modelos de datos.

• Utilizar QuerySets y Managers.

• Construir vistas, plantillas y URLs.

• Añadir paginación a vistas de listado.

• Usar vistas basadas en clases.

Instalar Django

Si ya ha instalado Django puede saltar a la siguiente sección Crear mi primer proyecto. Django es un paquete Python y, como tal, puede instalarse en cualquier entorno Python. Si aún no ha instalado Django, los siguientes pasos le guiarán para instalarlo en un entorno local de desarrollo.

Django 2.0 requiere la versión de Python 3.4 o superior. En los ejemplos de este libro utilizaremos Python 3.6.5. Si usa un sistema operativo Linux o macOS X, probablemente tenga instalado Python por defecto. Si usa otro tipo de plataformas, como Windows, puede descargar un instalador de Python desde https://www.python.org/downloads/windows/.

En caso de duda, puede comprobar si Python está instalado en su ordenador introduciendo el comando python en una consola. Si tras ejecutarlo aparece un texto similar al mostrado a continuación, Python está instalado en su sistema:


Si la versión de Python instalada es inferior a la 3.4, o si no tiene Python instalado en su sistema, descargue Python 3.6.5 desde https://www.python.org/downloads/ e instálelo. Si dispone de un sistema de gestión de paquetes en su sistema operativo, es recomendable realizar la instalación a través de él.

Al utilizar Python 3 no es necesario instalar una base de datos, ya que esta versión de Python incluye la base de datos SQLite en la instalación por defecto. SQLite es una base de datos ligera que se puede usar con Django para entornos de desarrollo. Para desplegar una aplicación en un entorno de producción, es necesario utilizar otro tipo de bases de datos avanzadas como PostgreSQL, MySQL u Oracle. Puede obtener más información sobre cómo configurar una base de datos con Django en https://docs.djangoproject.com/en/2.0/topics/install/#database-installation.

41,61 ₼
Janr və etiketlər
Yaş həddi:
0+
Həcm:
1026 səh. 1145 illustrasiyalar
ISBN:
9788426728661
Naşir:
Müəllif hüququ sahibi:
Bookwire
Yükləmə formatı:
epub, fb2, fb3, ios.epub, mobi, pdf, txt, zip