diff --git a/python-total/dia_16/README.md b/python-total/dia_16/README.md index 1980429..8e661b8 100644 --- a/python-total/dia_16/README.md +++ b/python-total/dia_16/README.md @@ -539,6 +539,7 @@ reverse_lazy se ocupa de redirigir la página cuando encuentre el evento que se ```python success_url = reverse_lazy('tareas') ``` +Pero al poner tareas tenemos que asegurarnos que en el fichero urls.py tengamos los mismo, que no es así. Tenemos «Pendientes», así que vamos a cambiar este nombre por tareas que tiene más lógica. De nuevo, tendremos que añadir la nueva página en el fichero urls.py, importando la clase y añadiendo el path. Quedando el documento así: ```python @@ -546,7 +547,7 @@ from django.urls import path from .views import ListaPendientes, DetalleTarea, CrearTarea urlpatterns = [ - path('', ListaPendientes.as_view(), name='pendientes'), + path('', ListaPendientes.as_view(), name='tareas'), path('tarea/', DetalleTarea.as_view(), name='tarea'), path('crear-tarea/', CrearTarea.as_view(), name='crear-tarea') ] @@ -568,6 +569,30 @@ Ahora ya podemos ver el enlace que nos lleva a la nueva página creada: ## 16.10. - Formulario para nueva tarea +Vamos a darle brilo al html del formulario "tarea_form.html". Los campos del formulario se añaden automáticamente con `{{form}}`, pero tenemos que darle un método para que se vea mejor. Por defecto es as_table: + +![](../img/dia16_28.png) + +Horrible, pero tenemos dos métodos más. Formato lista con as_ul: + +![](../img/dia16_29.png) + +O como párrafo, as_p, que es el que dejaremos: + +![](../img/dia16_30.png) + +Ya podemos probarlo, pero tendremos un error. Nos falta un fragmento de código: +```python +{% csrf_token %} +``` +El código `{% csrf_token %}` es una directiva utilizada en algunas plantillas o sistemas de generación estática de sitios web, como Hugo o Jekyll. + +Esta directiva se utiliza para generar un token de seguridad CSRF (Cross-Site Request Forgery) y se inserta en un formulario HTML. El token CSRF ayuda a prevenir ataques de falsificación de solicitudes entre sitios, asegurando que las solicitudes enviadas al servidor sean legítimas y no provengan de fuentes maliciosas. + +El token se genera y se incluye en el formulario para que cuando el usuario envíe el formulario, el servidor pueda verificar que el token es válido y corresponde a la sesión actual del usuario. Esto ayuda a proteger contra ataques en los que un tercero intenta enviar solicitudes maliciosas en nombre del usuario. + +Ahora ya podemos crear tareas desde la página creada y que nos reenvíe a la página principal 😎 + ## 16.11. - Editar tarea ## 16.12. - Eliminar tarea diff --git a/python-total/dia_16/mi_web/src/proyecto/base/templates/base/tarea_form.html b/python-total/dia_16/mi_web/src/proyecto/base/templates/base/tarea_form.html index ff8618b..bbe2f1c 100644 --- a/python-total/dia_16/mi_web/src/proyecto/base/templates/base/tarea_form.html +++ b/python-total/dia_16/mi_web/src/proyecto/base/templates/base/tarea_form.html @@ -1,2 +1,7 @@

Formulario de tareas

+
+ {% csrf_token %} + {{form.as_p}} + +
diff --git a/python-total/dia_16/mi_web/src/proyecto/base/urls.py b/python-total/dia_16/mi_web/src/proyecto/base/urls.py index 75d2b1c..dd28a81 100644 --- a/python-total/dia_16/mi_web/src/proyecto/base/urls.py +++ b/python-total/dia_16/mi_web/src/proyecto/base/urls.py @@ -3,7 +3,7 @@ from .views import ListaPendientes, DetalleTarea, CrearTarea urlpatterns = [ - path('', ListaPendientes.as_view(), name='pendientes'), + path('', ListaPendientes.as_view(), name='tareas'), path('tarea/', DetalleTarea.as_view(), name='tarea'), path('crear-tarea/', CrearTarea.as_view(), name='crear-tarea') ] diff --git a/python-total/img/dia16_28.png b/python-total/img/dia16_28.png new file mode 100644 index 0000000..f2e755b Binary files /dev/null and b/python-total/img/dia16_28.png differ diff --git a/python-total/img/dia16_29.png b/python-total/img/dia16_29.png new file mode 100644 index 0000000..a525a59 Binary files /dev/null and b/python-total/img/dia16_29.png differ diff --git a/python-total/img/dia16_30.png b/python-total/img/dia16_30.png new file mode 100644 index 0000000..032b2be Binary files /dev/null and b/python-total/img/dia16_30.png differ