2011-03-09 9 views

Respuesta

38

views.py:

context['loop_times'] = range(1, 8) 

html:

{% for i in loop_times %} 
     <option value={{ i }}>{{ i }}</option> 
{% endfor %} 
+12

+1: Mejor poner esto en la vista, pero 'range (1, 8)' sería mucho más limpio. – sdolan

+1

¿Por qué no pasar el rango? vista: contexto [ 'loop_range'] = rango (1, 8) plantilla: {% para i en loop_range%} { ... % endfor%} –

+0

Me encanta la simplicidad, gracias. Es extraño que algo tan simple no sea compatible con las plantillas. – Alveoli

0

Django plantillas Don rangos de soporte. Usted tiene un par de opciones:

  1. Agregue filtros rango: http://djangosnippets.org/snippets/1357/

Así es como agregar filtros personalizados: http://docs.djangoproject.com/en/dev/howto/custom-template-tags/

  1. Utilice un sistema de plantillas diferentes, como Mako, que hace de soporte eso.

http://docs.djangoproject.com/en/dev/ref/templates/api/#using-an-alternative-template-language Django-Mako es un proyecto de acceso directo para el uso de Mako: http://code.google.com/p/django-mako/

50

En las cadenas de Python son tan iterables esto funciona:

{% for i in "1234567" %} 
    <option value={{i}}> {{i}}</option> 
{% endfor %} 

Es explícito, así que está bastante bien, pero la respuesta de zjm1126 es probablemente mejor para una consideración a largo plazo.

+0

Muy útil para prototipos, gracias. –

Cuestiones relacionadas