Crear un enlace de Logout en Django es un proceso sencillo gracias a las herramientas que el framework proporciona. Utilizando la vista LogoutView del módulo contrib.auth, es posible implementar este funcionalidad de manera eficiente. Para configurarlo:
Crear la URL de Logout: Define una nueva URL en tu archivo de rutas y asígnala a LogoutView.
Modificar tu plantilla HTML: Digamos, base.html. Aquí, añade un formulario con la URL de Logout como acción. Django se encargará de eliminar la cookie en un POST.
Personaliza con Tailwind: Aprovecha este momento para aplicar clases de Tailwind CSS y mejorar la presentación.
Adicionalmente, si deseas traducir formularios al español, recuerda configurar el idioma en los ajustes del proyecto, como Español Colombia.
¿Cómo crear una nueva aplicación en Django?
Ventajas y facilidad van de la mano cuando se crean aplicaciones en Django. Veamos los pasos básicos para crear una aplicación, en este caso, para gestión de pedidos en un café:
Inicializar la aplicación: Ejecuta en la terminal el comando manage.py startapp orders.
Registrar la aplicación: Integrar la nueva app en la configuración global de aplicaciones instaladas (INSTALLED_APPS).
Configurar rutas: Crea un archivo para las rutas (orders/urls.py) y regístralo en el archivo de rutas globales de tu proyecto.
Con estos pasos, tu nueva aplicación estaría lista para que le añadas funcionalidades específicas.
¿Cómo definir modelos para una aplicación de órdenes?
En una aplicación de órdenes, los modelos son cruciales para estructurar los datos. Por ejemplo, puedes definir dos modelos: Order y OrderProduct.
# Modelo para una ordenclassOrder(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE) is_active = models.BooleanField(default=True) order_date = models.DateTimeField(auto_now_add=True)def__str__(self):returnf'Order {self.id} by {self.user.username}'# Modelo para productos en una ordenclassOrderProduct(models.Model): order = models.ForeignKey(Order, on_delete=models.CASCADE) product = models.ForeignKey(Product, on_delete=models.PROTECT) quantity = models.IntegerField()def__str__(self):returnf'{self.quantity} x {self.product} in Order {self.order.id}'
¿Cómo gestionar los modelos en el admin de Django?
Una vez creados los modelos, es esencial registrarlos en el administrador de Django para crear y gestionar órdenes desde la interfaz:
# Registro y configuración en admin.pyfrom django.contrib import admin
from.models import Order, OrderProduct
@admin.register(Order)classOrderAdmin(admin.ModelAdmin): inlines =[OrderProductInline] list_display =('id','user','is_active','order_date')
Este registro facilita las operaciones en el administrador, permitiendo ver y manejar las órdenes y sus productos asociados.
¿Cómo manejar migraciones y revisar el código?
Las migraciones en Django son esenciales para aplicar cambios en los esquemas de modelos. Siempre que modifiques un modelo:
Realiza nuevas migraciones: Emite manage.py makemigrations siempre que ajustes un modelo, y luego manage.py migrate para aplicar los cambios a la base.
Evita modificar migraciones pasadas: Estas ya han sido aplicadas y cambiaran podría desbordar errores en bases de datos existentes.
Revisiones de código: Antes de subir tus cambios, realiza revisiones minuciosas. Busca errores o mejoras potenciales.
Finalmente, el control de versiones y las revisiones de código son etapas críticas en cualquier flujo de desarrollo. Anímate a enviar pull requests y a participar en revisiones de código para mejorar colectivamente.
Recuerda que cada paso en el desarrollo es una oportunidad para aprender. Continúa explorando las vastas capacidades de Django y no dudes en colaborar con la comunidad para enriquecer tus proyectos. ¡Buena suerte y sigue adelante en tu camino de desarrollo!
Que raro, otra vez platzi no revisó el contenido antes de subir el curso, falta información, no está el repositorio y no se puede ver como llegó hasta aquí. Lamentablemente no me sorprende
Buenas tardes, Aqui el profesor habla de aplicar pull, pull request, pero hasta ahora no hemos visto realizar el primer pull, solo el primer git commit, y es verdad que los git commit, pull, push, se ven en el curso de git github, pero es mejor aprender como lo aplican en django especificamente con buenas prácticas para cada uno de estos, hasta poder aprender las buenas practicas para crear las ramas segun sean los caso en proyectos como este. A medida del curso se nota como saltan cosas, que a lo emjor si uno estuviera viendo este por primera vez se pudiera perder rapidamente, creo que obvian muchos detalles que marcan la direfencia a la hora de aprender en el curso. Sugiero que apliquen las buenas practicas y las herramientas relacionadas que se han visto en otros curos , git y github, documentacion en el codigo, buenas practicas...
Estoy revisando bien este caso para subir los archivos.
El profe menciona el repositorio del proyecto, pero no esta el URL del repo en recursos
Hola! Acá puedes encontrar el link del repo:
No, todo venia bien hasta los videos anteriores, acá quede perdido, no tengo ni la menor idea como hacer todo lo que muestra el profe, primero el logout, el register...etc.. :(
Bah nos arruinan cuando hay muchos cambios y no vemos como llegamos allí... No sé al resto, pero para mí este curso ha sido un reto importante y esta clase de cosas desmotivan mucho!
queda uno en las mismas... no muestra los cambios completos y tampoco esta el repositorio con el proyecto.... y entonces ??????
Hey Sergio, veo que tienes problemas para seguir el curso, te propongo que hagamos una session via zoom para que podamos resolver esos problemas.
No me gustaría que tengas una mala experiencia viendo este curso.
Avísame cuándo puedes y te agendo!
A mi no me registra, ni me envia error
Venia tan motivado con el curso, hasta que llegue aquí. Se me quitaron las ganas de terminar el curso. No me sirve de nada descargar el repositorio si al final lo que voy a hacer es un copia y pega. Debió haber explicado como llego hasta ahí.
Nos comparten la URL del repo! pls
Podrías subir los cambios al repositorio por favor.
Interesante de OrderProductInlineAdmin
si en ciertos requerimientos se desea paginar como se haría?
por ejemplo, no deseo que lo liste todos los productos, deseo veo de 5 en 5. Como se podria paginar
gracias
eso sw hace en el css
gracias por la respuesta.
Si tenemos un caso por ejemplo, al editar producto deseo ver todos los comentarios que puede tener, entonces si hay en teoria miles de comentarios, para optimizar consulta se deberia usar paginacion, en este caso como se haria?
saludos
¡Noooo, qué tristeza! Íbamos tan bien, con tanta ilusión y esperanza, y de repente empiezan a hacer cosas que no entiendo para nada. Apenas estoy aprendiendo y esto me frustra muchísimo... es una verdadera decepción. Sentí que ya ni querían explicar más, como si les importara poco mi esfuerzo.
Hola!
La frustración es algo que veras muy seguido por aca.
Dicho esto, ¿cómo te puedo ayudar?, por favor comparte los errores que tengas y los pasos que has intentado para solucionar.
Si definitivamente no lo logras te ofrezco una video llamada. La puedes agendar aca: lcmartinez.com
Yo me fui por otro rumbo las ordenes las integre a mi app store en la cual menjo mi lista de productos, y los pedidos , y la creacion y agregar otros productos categorias ver la ventas y eso a futuro hare una app de dashboard tambien pienso hacer una app pero que sirva de landing page.
En la tecnologia siempre hay varios caminos para lograr lo mismo!
Así van quedando las diferentes vistas, pero no he podido cambiar la forma para que seleccionar archivo sea un botón y no un link.
Igual para aquellos que no han podido hacer la PR se tienen que generar los cambios en otra branch diferente a la default, entonces asi podrían trabajar los PR, en esencia son mas como solicitud de aprobación de cambios. Se cran dentro del mismo github y en la sección de Pull Request. No se extrañen si de repente salen como PR.
Profesor beunas tardes disculpe, ya que menciona los features en esta clase, y sobre todo que hemos creados features mas avanzados, mejor sería que durante el curso cree los features para que los estudiantes que estsmos django podamos saber las buenas prácticas que debemos tener o tomar en cuenta al moemento de crear los features como los nombres de las mismas.
Explicación extra
*# Register your models here.*from django.contrib import adminfrom .models import Order, OrderProduct
"""
admin.TabularInline: Esto indica que la clase OrderProductInlineAdmin hereda de la clase TabularInline que se encuentra dentro del módulo admin.
TabularInline es una clase de Django que permite mostrar modelos relacionados (en este caso, OrderProduct) directamente dentro de la página de edición de otro modelo (en este caso, Order), presentándolos en un formato de tabla."""class OrderProductInlineAdmin(admin.TabularInline): model = OrderProduct extra = 0
"""inlines = [OrderProductInlineAdmin]: Este atributo dentro de OrderAdmin es una lista que contiene otras clases InlineAdmin.
En este caso, incluye OrderProductInlineAdmin. Esto es lo que permite que los objetos relacionados del modelo OrderProduct se muestren y se puedan editar directamente dentro de la página de administración del modelo Order"""class OrderAdmin(admin.ModelAdmin): model = Order inlines = [OrderProductInlineAdmin]## Esto permite hacer el macth con los productos
admin.site.register(Order, OrderAdmin)
aqui para el Link de github para code review
Hola, maestro, he estado siguiendo sus cursos de python, de flask y actualmente el de django. Es un gran profesor, me ilusionan muchos sus cursos, pero en todos, despues de la mitad del curso adelanta muchas cosas, estoy seguro que muchos cumplen el reto, pero hay otro montón como yo que nos frustramos, y no es por pereza, pero es que alargar el curso no seria malo con tal de explicarnos puntos clave, o como en este caso, el trayecto normal, pero de repente con tal de avanzar se salta muchas cosas, al menos en el base.html yo ya me perdí, y estoy seguro que puedo resolverlo buscando por aparte, pero como curso de paga al menos estaría muy padre seguir un rumbo normal del capítulo. Le estimo mucho que de la opción de una videollamada para resolver, pero viendo el mismo patrón en otros cursos, no es la solución real, al menos para los que somos muy principiantes.
Todo es como retro, en realidad me agrada mucho y seguiré tomando este y muchos mas cursos de usted. Gracias
Hola les comparto los apuntes que hice sobre los Modelos Inline, espero les sirvan.
### Inline: Modelos Relacionados en una Misma Página
Una de las características más útiles del panel de administración son los Inline. Permiten editar objetos de un modelo relacionado en la misma página que el modelo padre, lo que simplifica la creación de relaciones Uno a Muchos. Por ejemplo, se pueden editar los comentarios de un post directamente en la página de edición del post.
Existen dos tipos de Inline:
StackedInline
Muestra los campos de los modelos relacionados en un formato apilado, uno debajo del otro, similar a la forma de edición de un modelo normal. Es útil cuando se tienen muchos campos.
# blog/admin.pyfrom django.contribimportadminfrom.modelsimportPost,ComentarioclassComentarioInline(admin.StackedInline): model =Comentario@admin.register(Post)classPostAdmin(admin.ModelAdmin): inlines =[ComentarioInline]
TabularInline
Muestra los campos en un formato de tabla, ideal para modelos con pocos campos y para ver múltiples objetos relacionados a la vez.
# blog/admin.pyfrom django.contribimportadminfrom.modelsimportPost,ComentarioclassComentarioInline(admin.TabularInline): model =Comentario extra =0@admin.register(Post)classPostAdmin(admin.ModelAdmin): inlines =[ComentarioInline]
Parámetro Extra
El parámetro extra en TabularInline (y también en StackedInline) controla la cantidad de formularios vacíos que se muestran en la página de administración para agregar nuevos objetos relacionados.
En esencia, este parámetro facilita la creación de nuevos registros. En lugar de que un administrador tenga que hacer clic en "Agregar otro" cada vez que desea añadir un nuevo objeto relacionado (como un comentario a un post), Django muestra un número predeterminado de formularios vacíos listos para ser llenados.
Opciones Adicionales
list_editable: Permite editar campos directamente desde la página de lista, lo que agiliza el proceso de edición masiva.
prepopulated_fields: Utilizado para campos que deben autocompletarse, como los slugs, a partir de otros campos.
readonly_fields: Muestra campos que no pueden ser editados en el formulario.
Las clases de admin de Django proporcionan una manera simple y poderosa de gestionar el contenido de una aplicación, lo que ahorra un tiempo considerable en el desarrollo de la interfaz de administración.