views.py
Código:
#!/usr/bin/env python # -*- coding: utf-8 -*- #Importamos modulos necesarios para las vistas from django.shortcuts import get_object_or_404, render, redirect, render_to_response from django.http import HttpResponseRedirect from django.core.urlresolvers import reverse from django.views import generic from django.utils import timezone from blog.models import Entrada, Comentario, Imagen from blog.forms import ComentarioForm from django.template import RequestContext #Creamos una funcion que muestre cada entrada class IndexView(generic.ListView): template_name = 'blog/index.html' context_object_name = 'entradas' def get_queryset(self): return Entrada.objects.all #Creamos una clase que mostrada solo la entrada seleccionada class EntradaView(generic.DetailView): model = Entrada template_name = 'blog/entrada.html' context_object_name = 'entrada'
models.py
Código:
urls.py app#!/usr/bin/env python # -*- coding: utf-8 -*- #Aqui programaremos los modelos para la aplicación blog #importamos los modulos necesarios para los modelos from django.db import models from django.contrib.contenttypes import generic from django.contrib.contenttypes.models import ContentType from django.utils import timezone from django.utils.html import format_html import datetime #Esta es la clase para el modelo de la entrada del blog. En el habrá un titulo #y la fecha en la que se publicó class Entrada(models.Model): #Permite escribir un texto de 100 caracteres como maximo y guardarlo en #la base de datos Titulo = models.CharField(max_length=100) # Permite escribir un texto extenso y guardarlo en la base de datos Cuerpo = models.TextField() #Permite escribir un texto de 7 caracteres como maximo y guardarlo en #la base de datos Color_del_texto = models.CharField(max_length=7) #Guarda la fecha actual de la publicación de la entrada Fecha_de_la_entrada = models.DateTimeField(auto_now_add=True) # Crea un selector CATEGORIA = ( ('Viajes', 'Viajes'), ('Productos','Productos'), ('Cursos','Cursos'), ('Aplicaciones','Aplicaciones') ) Categoria = models.CharField(max_length=14, choices=CATEGORIA) # Envia las variables siguientes como string def __unicode__(self): return self.Titulo return self.Cuerpo return self.Color_del_texto return self.Categoria #Envia una etiqueta html que afecta al Tituloy fue indicada por Color_del_texto def Titulo_de_la_entrada(self): return format_html('<span style="color: {0}">{1}</span>', self.Color_del_texto, self.Titulo) #Esta es la clase para el modelo de los comentarios del blog. En el se escribira los comentarios referente #a la entrada class Comentario(models.Model): # Relaciona la base de datos de entrada con el comentario entrada = models.ForeignKey(Entrada) # Permite escribir un texto extenso y guardarlo en la base de datos Texto = models.TextField() #Guarda la fecha actual de la publicación del comentario Fecha_del_comentario = models.DateTimeField(auto_now_add=True) # Envia las variables Texto y Fecha_del_comentario como string def __unicode__(self): return self.Texto return self.Fecha_del_comentario #Esta es la clase que permitirá subir imagenes a cada entrada class Imagen(models.Model): #relaciona content_type con object_id en la base de datos content_type = models.ForeignKey(ContentType) #Sube una imagen al servidor imagen = models.ImageField(upload_to="imagenes") object_id = models.PositiveIntegerField() #relaciona content_type con object_id en la base de datos content_object = generic.GenericForeignKey("content_type", "object_id") #Guarda la fecha actual de la subida de imagen Fecha_de_la_imagen = models.DateTimeField(auto_now_add=True) def __unicode__(self): return self.Fecha_de_la_imagen
Código:
urls.py global#!/usr/bin/env python # -*- coding: utf-8 -*- from django.conf.urls import patterns, url from blog import views urlpatterns = patterns('', url(r'^', views.IndexView.as_view() , name='inicio'), url(r'^(?P<pk>\d+)/$', views.EntradaView.as_view, name='entrada'), )
Código:
indext.html#!/usr/bin/env python # -*- coding: utf-8 -*- from django.conf.urls import patterns, include, url # Uncomment the next two lines to enable the admin: from django.contrib import admin admin.autodiscover() urlpatterns = patterns('', # Examples: # url(r'^$', 'promodominus.views.home', name='home'), # url(r'^promodominus/', include('promodominus.foo.urls')), # Uncomment the admin/doc line below to enable admin documentation: url(r'^admin/doc/', include('django.contrib.admindocs.urls')), # Uncomment the next line to enable the admin: url(r'^admin/', include(admin.site.urls)), url(r'^blog/', include('blog.urls', namespace="blog")),
Código:
entrada.html{% extends "base.html" %} {% block content %} <h1>Entradas</h1> {% for datos in entradas %} <a href="{% url "blog:entrada" pk=datos.pk %}"><h2>{{ datos.Titulo|upper }}</h2></a> <p>{{ datos.Cuerpo }}</p> <p>Fecha de publicación: {{ datos.Fecha_de_la_entrada }}</p> </form> {% endfor %} {% endblock %}
Código:
Un saludo a todos. {% extends "base.html" %} {% block content %} <h1>{{entrada.Titulo}}</h1> <p>{{entrada.Cuerpo}}</p> <p>{{entrada.Fecha_de_la_entrada}}</p> {% endblock %}