Foros del Web » Programando para Internet » Python »

Como extraer parámetros de una clase en models.py

Estas en el tema de Como extraer parámetros de una clase en models.py en el foro de Python en Foros del Web. Hola, Tengo una duda tengo una clase definida así en models.py: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Python: Ver original models. py class Cabecera ( models. Model ) ...
  #1 (permalink)  
Antiguo 18/07/2012, 18:30
 
Fecha de Ingreso: mayo-2012
Ubicación: Mexico
Mensajes: 82
Antigüedad: 12 años, 6 meses
Puntos: 7
Como extraer parámetros de una clase en models.py

Hola, Tengo una duda tengo una clase definida así en models.py:

Código Python:
Ver original
  1. models.py
  2. class Cabecera(models.Model):
  3.     titulo = models.CharField(max_length=255, unique = True)
  4.     Keyword = models.CharField(max_length=255, unique = True)
  5.     description = models.CharField(max_length=255, unique = True)
  6.     def __unicode__(self):
  7.         return self.titulo

No voy a copiar todo el código para no aburrirles, como obtengo la información de titulo en una vista.
Que al pasarlo por la plantilla me lo imprima. Ya tengo el views.py y e importado clase Cabecera.
Estuve buscado y encontré algo sobre Cabecera.objects.all().

Código HTML:
<html>
<head>
<title>
{{ titulo }}
</title>
</head>
<body>
</body>
</html> 
¿Que Opinan?
Muchas Gracias
Saludos.

Última edición por MacintoshD; 18/07/2012 a las 18:41 Razón: Agregar Etiqueta
  #2 (permalink)  
Antiguo 18/07/2012, 19:10
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Como extraer parámetros de una clase en models.py

¿Que hay en el código de la vista? ¿Que pasa si hay varios títulos? ¿Que pasa si no hay títulos?

Entiendo que quieres poner un titulo en la pagina, pero ¿como sabes que titulo va en cada pagina?
  #3 (permalink)  
Antiguo 18/07/2012, 22:26
 
Fecha de Ingreso: mayo-2012
Ubicación: Mexico
Mensajes: 82
Antigüedad: 12 años, 6 meses
Puntos: 7
Respuesta: Como extraer parámetros de una clase en models.py

Hola Ricardo, voy a responder a las 4 preguntas formuladas:

1. Para no desviarnos mucho voy a escribir lo mas importante.
Código Python:
Ver original
  1. from django.shortcuts import render_to_response
  2. from django.template import RequestContext
  3. from mysite.apps.blog.models import Cabecera
  4. def index_view(request):
  5.     return render_to_response('home/index.html', ctx, context_instance=RequestContext(request))

2 y 3. Aun no he pensado en este problema.

4. No tendre problemas porque solo sera una aplicación con una sola pagina.

Muchas Gracias.
Saludos.
  #4 (permalink)  
Antiguo 18/07/2012, 22:39
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Como extraer parámetros de una clase en models.py

Solo necesitas enviarle el titulo. El titulo bien lo puedes poner estático en el html o bien crean bien un pequeño sistema de settings para tenerlo como configurable.


Código Python:
Ver original
  1. from django.shortcuts import render_to_response
  2.  
  3. def index_view(request):
  4.     return render_to_response('home/index.html', {'titulo': 'AQUI EL TITULO'})
  #5 (permalink)  
Antiguo 18/07/2012, 23:42
 
Fecha de Ingreso: mayo-2012
Ubicación: Mexico
Mensajes: 82
Antigüedad: 12 años, 6 meses
Puntos: 7
Respuesta: Como extraer parámetros de una clase en models.py

Lo que sucede es que los parámetros de la clase Cabecera son estáticos. Cada campo será rellenado desde el admin de Django.

Entonces mi duda es como extraer esos parámetros de la clase y imprimirlos en una vista, como tu lo has echo funciona pero estas asignando una cadena manualmente.

No se si me hago entender, pero ya leyendo he encontrado sobre get_object_or_404,

Código Python:
Ver original
  1. def index_vista(request):
  2.     cabecera = get_object_or_404(Cabecera, pk = object_id) # Por default 1.
  3.         return render_to_response('home/index.html', {'cabecera':cabecera}, context_instance=RequestContext(request))

Código HTML:
<html>
<head>
<title>{{ cabecera.title }}</title>
<meta name="description" content="{{ cabecera.description }}" />
<meta name="keywords" content="{{ cabecera.keywords }}" />
<head>
<body>
Vista
</body>
</html> 
Aun así no funciona porque no he definido object_id, por defecto puedo ponerle la que corresponda, pero como seria contenido estático, debo extraer la id de alguna manera.

PD: Esta semana apenas empece a trabajar con Django después de casi dos meses de lectura sobre Python. Así que no soy un experto, aclaro, solo para justificar mi falta de conocimiento y de una mala expresión de palabras reservadas.

Muchas Gracias.
Saludos.

Última edición por MacintoshD; 18/07/2012 a las 23:49
  #6 (permalink)  
Antiguo 19/07/2012, 08:02
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Como extraer parámetros de una clase en models.py

¿Por que crearías un modelo para tener el titulo, la descripción y los keywords si solo aparecen una sola vez?

¿Que pasa si de repente surge algún otro campo similar? ¿Tendrías que crear otro modelo?

La respuesta es muy simple, solo tienes que crear un modelo sencillo (llave-valor) donde guardes ese tipo de configuración.

Ejemplo:
Código Python:
Ver original
  1. from django.db import models
  2. class Configuracion(models.Model):
  3.     configuracion = models.CharField(max_length=80, primary_key=True)
  4.     valor = models.TextField()

Entonces desde tu vista haces lo siguiente.
Código Python:
Ver original
  1. from django.shortcuts import render_to_response
  2. from myapp.models import Configuracion
  3.  
  4. def index_view(request):
  5.     titulo = Configuracion.objetcs.get(pk='titulo')
  6.     descipcion = Configuracion.objetcs.get(pk='descripcion')
  7.     keywords = Configuracion.objetcs.get(pk='keywords')
  8.     response = {'titulo': titulo.valor, 'keywords', keyworkds.value, 'descripcion', descripcion.value}
  9.     return render_to_response('home/index.html', response)

Si vas hacer esto en cada vista que tengas tal vez te convenga hacer un decorador para decorar tus vistas.
  #7 (permalink)  
Antiguo 20/07/2012, 16:29
 
Fecha de Ingreso: mayo-2012
Ubicación: Mexico
Mensajes: 82
Antigüedad: 12 años, 6 meses
Puntos: 7
Respuesta: Como extraer parámetros de una clase en models.py

Con el ejemplo que me has dado tengo suficiente, lo que haré será inicializar estos campos en la db y por ahora funcionando, puedo seguir investigando.

Muchas gracias.
Saludos.

Etiquetas: 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 16:08.