Foros del Web » Programando para Internet » Python »

Repetir for en columnas

Estas en el tema de Repetir for en columnas en el foro de Python en Foros del Web. Hola, necesito mostrar el contenido de una base de datos de forma que se muestren los útlimos 9 artículos en 3 columnas He probado de ...
  #1 (permalink)  
Antiguo 01/12/2013, 05:40
Avatar de kojicomics  
Fecha de Ingreso: junio-2013
Mensajes: 49
Antigüedad: 11 años, 5 meses
Puntos: 1
Repetir for en columnas

Hola, necesito mostrar el contenido de una base de datos de forma que se muestren los útlimos 9 artículos en 3 columnas

He probado de varias formas pero no funciona bien

Éste es el código que muestra los 9 artículos de forma vertical:

Código HTML:
Ver original
  1. {% for post in post.object_list %}
  2. <article class="blog_article">
  3.     <div class="article_title">
  4.         <a href="{% url 'blog.views.post' post.pk %}">
  5.             <h3>{{ post.title }}</h3>
  6.         </a>
  7.     </div>
  8.     <time>{{ post.date }}</time>
  9.     <div class="article_image">
  10.         <img src="{{ post.header.url }}" width="90%"/>
  11.     </div>
  12.     <p>{{ post.body_home }}</p>
  13. {% endfor %}

¿Cómo debería modificarlo para que se muestre en una tabla de 3 columnas?

Utilizo Django 1.6 y Python3.3

Muchas gracias
  #2 (permalink)  
Antiguo 01/12/2013, 13:59
Avatar de ggomez91  
Fecha de Ingreso: octubre-2008
Mensajes: 181
Antigüedad: 16 años, 1 mes
Puntos: 13
Respuesta: Repetir for en columnas

Muéstranos qué has intentado por lo menos.
  #3 (permalink)  
Antiguo 01/12/2013, 15:54
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: Repetir for en columnas

Esto no es problema de django o de python.

Parece mas bien problema de tu CSS.

O si prefieres usar <table> para tabular tus datos sería mas conveniente.

Código Python:
Ver original
  1. <table>
  2. {% for post in post.object_list %}
  3.   {% if condicion_para_abrir_tag %}
  4.   <tr>
  5.   {% endif %}
  6.     <td>{{ post }}</td>
  7.   {% if condicion_para_cerrar_tag %}
  8.   </tr>
  9.   {% endif %}
  10. {% endfor %}
  11. </table>

Obviamente tienes que sustituir condicion_para_abir_tag y condicion_para_cerrar_tag, con las condiciones que satisfagan eso.

Otra manera
Código Python:
Ver original
  1. <table>
  2. {% for post_sublist in post.object_list %}
  3.   <tr>
  4.     {% for article in post_sublist %}
  5.       <td>{{ article }}</td>
  6.     {% endfor %}
  7.   </tr>
  8. {% endfor %}
  9. </table>
No recomiendo esto, porque estarías metiendo lógica de presentación en la lógica de negocios. Si algún día quieres que ahora sean 2 columnas, tienes que cambiar el código de la vista y no el html.

La tercera opción (y la mas recomendable) es simplemente usar CSS.
No soy un experto, pero meterías todo en div con cierto ancho y a cada articulo le das el ancho suficiente para que solo quepan 3 en todo lo ancho y los demás pasan abajo.

Puedes usar las grids de bootstrap como ejemplo. http://getbootstrap.com/css/#grid
  #4 (permalink)  
Antiguo 03/12/2013, 02:50
Avatar de jhg
jhg
 
Fecha de Ingreso: marzo-2012
Mensajes: 96
Antigüedad: 12 años, 7 meses
Puntos: 1
Respuesta: Repetir for en columnas

Como ya te han dicho, lo correcto es usar CSS: http://www.desarrolloweb.com/articul...umna-css3.html Este enlaces es sobre texto en columnas con CSS3, puede que todavía no funcione bien o quizas vaya perfecto segun como este actualmente implementado este borrador del modulo de CSS3 que tiene la especificación.

Tambien como te han dicho si dentro de un contenedor te aseguras que por ancho solo se puedan alinear 3 y los alineas flotandolos dentro los que no puedan continuar en la linea continuan abajo y el aspecto visual es de que hubiera columnas.

Las tablas... si es para datos tabulados, perfecto, pero si no son para datos tabulados sino para presentación visual de datos no tabulados... las desaconsejaría entonces. Y antes de meter nada de presentacíon en la logica, en el código en python de la vista, es preferible te crees un tag propio y así se pase el numero de columnas como parametro y al menos tenerlo fuera de la vista.
__________________
JHG

Etiquetas: django, maquetacion
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 15:25.