Foros del Web » Programando para Internet » Python »

No enlaza a entrada.html solo refresca la pagina

Estas en el tema de No enlaza a entrada.html solo refresca la pagina en el foro de Python en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 19/07/2013, 05:42
 
Fecha de Ingreso: julio-2013
Mensajes: 1
Antigüedad: 10 años, 9 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.
  #2 (permalink)  
Antiguo 19/07/2013, 14:02
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 1 mes
Puntos: 1360
Respuesta: No enlaza a entrada.html solo refresca la pagina

1. ¿Que url te genera, en los links de los titulos?
Si no te genera nada. Es error de tu urlconf.
Si te genera algo a medias estas generando mal la url.

Si te genera la url bien, entonces cuando intenta entrar a esa url no la esta resolviendo en el urlconf.
En ese caso cambia
Código Python:
Ver original
  1. url(r'^', views.IndexView.as_view() , name='inicio'),
por
Código Python:
Ver original
  1. url(r'^$', views.IndexView.as_view() , name='inicio'),

Etiquetas: admin, django
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 06:20.