19/07/2013, 05:42
|
| | Fecha de Ingreso: julio-2013
Mensajes: 1
Antigüedad: 11 años, 4 meses Puntos: 0 | |
No enlaza a entrada.html solo refresca la pagina Hola, estoy creando un blog con django y tengo un problema y es que los titulos de las entradas de index.html son links que enlaza a entrada.html. Resulta al hacer click al enlace no me muestra entrada.html con la entrada correspondiente sino que me refresca la pagina y ya esta. Estos son mis ficheros.
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:
#!/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
urls.py app
Código:
#!/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'),
)
urls.py global
Código:
#!/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")),
indext.html
Código:
{% 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 %}
entrada.html
Código:
{% extends "base.html" %}
{% block content %}
<h1>{{entrada.Titulo}}</h1>
<p>{{entrada.Cuerpo}}</p>
<p>{{entrada.Fecha_de_la_entrada}}</p>
{% endblock %}
Un saludo a todos. |