Django 2. Antonio Melé

Чтение книги онлайн.

Читать онлайн книгу Django 2 - Antonio Melé страница 20

Автор:
Серия:
Издательство:
Django 2 - Antonio Melé

Скачать книгу

ello está usando el ORM de Django en la plantilla, ejecutando el método count() del QuerySet comments. El lenguaje de plantillas de Django no hace uso de paréntesis a la hora de llamar a métodos o funciones. El tag {% with %} permite asignar un valor a una nueva variable que estará disponible para usar dentro del bloque, hasta la etiqueta {% endtag %}.

      Illustration La etiqueta de plantilla {% with %} es útil para evitar múltiples ejecuciones costosas dentro de la misma plantilla, por ejemplo, sobre la base de datos.

      Utilizará el filtro de plantilla pluralize para mostrar el plural de la palabra comment en función del valor de total_comments. Este filtro funciona para múltiples idiomas, incluido el español. Los filtros de plantilla toman el valor de la variable a la que se aplican y la utilizan como entrada para generar una salida. Esto se tratará en el capítulo 3, Extensiones para el blog.

      El filtro de plantilla pluralize devuelve una cadena con la letra “s” si el valor de entrada es diferente de 1. Los posibles textos renderizados serán 0 comments, 1 comment o N comments. Django incluye múltiples etiquetas y filtros de plantilla que nos ayudan a mostrar la información del modo en que necesitará.

      A continuación, incluirá la lista de comentarios. Para ello añadirá en la plantilla post/detail.html las siguientes líneas:

Illustration

      La etiqueta {% for %} permite iterar sobre los comentarios. En caso de que la lista comments esté vacía, mostrará un comentario por defecto indicando al usuario que todavía no hay comentarios. Con la variable {{ forloop. counter }} enumerará los comentarios. Esta variable contiene un contador de bucle, indicando la iteración en que se encuentra. Por último, se muestra el nombre del usuario que realizó el comentario, la fecha y las primeras letras del cuerpo del comentario.

      Para terminar, queda por mostrar un mensaje indicando que todo ha ido correctamente en caso de procesar bien el formulario, o el formulario en sí. Va a añadir las siguientes líneas al código anterior:

Illustration

      En caso de que el objeto new_comment exista, se muestra un mensaje satisfactorio indicando que el comentario se ha creado correctamente. En caso contrario, se muestra el formulario con un elemento párrafo <p> por cada campo, incluyendo el token CSRF necesario para las acciones POST. Va a abrir http://127.0.0.1:8000/blog/ en el navegador y pulsar sobre el título de un artículo para ver la página de detalle. Debería ver algo similar a esto:

Illustration

      Si añade varios comentarios a través del formulario, estos deberían aparecer bajo el artículo en orden cronológico:

Illustration

      Va a ir a http://127.0.0.1:8000/admin/blog/comment/ en el navegador. Verá la página de administración con la lista de comentarios que ha creado. Seleccione uno para editarlo. Desactive el check Active y pulse sobre el botón Save. El sistema le redirigirá a la lista de comentarios, y podrá ver que la columna Active se encuentra desactivada para el comentario que acaba de modificar. La pantalla debería verse de un modo similar a:

Illustration

      Si vuelve a la página de detalle del artículo, podrá ver que el comentario desactivado no se muestra. Tampoco se tiene en cuenta para la contabilización de comentarios. Gracias al campo active, puede desactivar comentarios inapropiados y evitar mostrarlos en los artículos.

      Tras implementar el sistema de comentarios, va a crear un modo de etiquetar los artículos. Esto lo hará integrando aplicaciones de Django de terceros en los proyectos. El módulo django-taggit es una aplicación reutilizable que ofrece un modelo Tag y un gestor que facilita añadir etiquetas a cualquier modelo. En https://github.com/alex/django-taggit puede echar un vistazo al código.

      Lo primero que tiene que hacer es instalar django-taggit a través de pip con el siguiente comando:

Illustration

      Tras la instalación, va a editar el fichero settings.py del proyecto mysite e incluir la aplicación taggit en la lista INSTALLED_APPS:

Illustration

      A continuación, abra el fichero models.py de la aplicación blog y añada el gestor TaggableManager que ofrece django-taggit para relacionarlo con el modelo Post:

Illustration

      El gestor tags permite añadir, recuperar y eliminar etiquetas de un objeto Post.

      Para generar las migraciones, va a ejecutar el siguiente comando para llevar a cabo los cambios en el modelo:

Illustration

      Obteniendo la siguiente salida:

Illustration

      Ahora, ejecute el siguiente comando para crear las tablas necesarias para los modelos de django-taggit y sincronizar los cambios que ha realizado en Post:

Illustration

      Obtendrá una salida indicando que las migraciones se han aplicado:

Illustration

      Con esto, la base de datos está lista para utilizar los modelos de django-taggit. A continuación, se detalla cómo usar el gestor tags. Para ello abra una consola y ejecute el comando python manage.py shell. Una vez tengamos el intérprete listo, ejecute las siguientes líneas de código para recuperar uno de los artículos (el que tiene id 1):

Illustration

      Ahora va a añadir algunas etiquetas y verificar que se han incorporado correctamente:

Illustration

      Por último, eliminará una etiqueta y verificar la lista de etiquetas:

Illustration

      Va a verificar esta misma información desde el panel de administración. Para ello, ejecute el servidor de desarrollo con python manage.py runserver

Скачать книгу