15

I have a list of 16 results, let's call it "results". I want to arrange them in a 4 x 4 table.

Using the django template, how can I do this? (It doesn't seem like cycle would help me here)

<table>
{% for r in results %}
...?
{% endfor %}
</table>

Thanks!!

3 Answers 3

28

You can use the cycle tag for this.

<table>
  {% for r in results %}
    {% cycle '<tr>' '' '' '' %}
      <td>{{r.content}}</td>
    {% cycle '' '' '' '</tr>' %}
  {% endfor %}
</table>

Would output something like...

<table>
  <tr>
    <td>result 1</td>
    <td>result 2</td>
    <td>result 3</td>
    <td>result 4</td>
  </tr>
  <tr>
    <td>result 5</td>
    <td>result 6</td>
    <td>result 7</td>
    <td>result 8</td>
  </tr>
  <!-- etc -->
</table>
Sign up to request clarification or add additional context in comments.

Comments

13

You need to build something like this

<table>
<tr>
  <th>header1</th>
  <th>header2</th>
  <th>header3</th>
  <th>header4</th>
</tr>
{% for r in result %}
<tr>
  <th> {{ result.name }}</th>
  <th> {{ result.address }}</th>
  <th> {{ result.time }}</th>
  <th> {{ result.date }}</th>
</tr> 
{% endfor %}
</table>

provided that you have an array (actually, a dictionary) this way

result['name']
result['address']
result['time']
result['date']
return render_to_response("my_template.html", {'result:result'})

There are a number of do this. This is the most straightforward ways. Look at Django template tag documentation.

Here is a list of techniques I learned throughout. There are more, but I don't have time to document all of them. http://binarybugs01.appspot.com/entry/template-iteration-techniques

Sometimes you have to be careful with the context dictionary you are passing to the template. If you are passing this

result = {'name': 'John', 'time': '12/2/2012'....etc}
context['result'] = result
return render_to_response("my_template.html", context}

You are iterating over result.result and the keys are result.result.name


I also want to remind you that you either have a list, a set, a dictionary, or a tuple.You can import array and use it, however.

1 Comment

not result.name i think its r.name and r.time, r.address,r.date {% for r in result %} <tr> <th> {{ result.name }}</th> <th> {{ result.address }}</th> <th> {{ result.time }}</th> <th> {{ result.date }}</th> </tr> {% endfor %}
3

Suppose you have:
results=[[1, 2, 3, 4,], [5, 6, 7, 8], [9, 10, 11, 12], [13, 14, 15, 16]]

The following template can be used to display results in a table:

<table>
  {% for rowval in results %}    
     <tr>
     {% for val in rowval %}
      <td>{{val}}</td>
     {% endfor %}
    </tr>
  {% endfor %}
</table> 

It will display:

1  2  3  4
5  6  7  8
9  10 11 12
13 14 15 16

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.