diff --git a/7d_Proyecto_Web_Completo.md b/7d_Proyecto_Web_Completo.md index 871d3c4..8c2ef54 100644 --- a/7d_Proyecto_Web_Completo.md +++ b/7d_Proyecto_Web_Completo.md @@ -1,37 +1,96 @@ -## Aplicar estilo a Servicios +## Creacion del Blog -- Utlizar parte el código de home.html como base de estilo. -- Reemplazar el contenido a mostrar, con los servicios. - ` {{servicio.titulo}} ` y ` {{servicio.contenido}} ` -- Cambiar las rutas de los `src="..."` - -**servicios.html** +Crear app ` python3 manage.py startapp blog ` +Crear el modelo, una clase por elemento de las entradas del blog + +/blog/**models.py** ``` -{% extends 'ProyectoWebApp/base.html' %} +from django.db import models +from django.contrib.auth.models import User -{% load static %} +# Create your models here. -{% block content %} +class Categoria(models.Model): + nombre = models.CharField( max_length = 50 ) + created = models.DateTimeField( auto_now_add = True) + updated = models.DateTimeField( auto_now_add = True) - {% for servicio in servicios %} + class Meta: + verbose_name = 'categoria' + verbose_name_plural = 'categorias' - -
-
-
- -
-

- {{servicio.titulo}} - {{servicio.contenido}} -

-
-
-
-
+ + def __str__(self): + return self.nombre - {% endfor %} -{% endblock %} +class Entrada(models.Model): + titulo = models.CharField( max_length = 50 ) + contenido = models.CharField( max_length = 50 ) + + autor = models.ForeignKey( User, on_delete = models.CASCADE ) + categorias = models.ManyToManyField( Categoria ) + + imagen = models.ImageField( upload_to='blog', null=True, blank=True ) + created = models.DateTimeField( auto_now_add = True) + updated = models.DateTimeField( auto_now_add = True) + + class Meta: + verbose_name = 'entrada' + verbose_name_plural = 'entradas' + + + def __str__(self): + return self.titulo + + +``` + +Relación uno a muchos. + - Un User puede tener muchas entradas `ForeignKey(User, on_delete=models.CASCADE)` + *en este caso al eliminar un usuario, se eliminan sus entradas* + + +Relación muchos a muchos. + - Una categoría puede estar en varias entradas, y + - Una entrada puede pertencer varias categorias `ManyToManyField()` + +### Registrar app Blog + +**urls.py** del proyecto ``` +... +INSTALLED_APPS = [ + ... + 'blog', +] +... +``` + +#### Crear migraciones y Migrar: +🔸️`python3 admin.py makemigrations` + + +🔸️`python3 admin.py migrate` + +#### Administrar Blog +``` +from django.contrib import admin +from .models import Categoria, Entrada + +# Register your models here. + +class CategoriaAdmin(admin.ModelAdmin): + readonly_fields = ('created', 'updated') + + +class EntradasAdmin(admin.ModelAdmin): + readonly_fields = ('created', 'updated') + + +admin.site.register(Categoria, CategoriaAdmin) +admin.site.register(Entrada, EntradasAdmin) + +``` +