почему мой шаблон Django не может показать текущую вещь - PullRequest
0 голосов
/ 16 февраля 2011

это мои views.py:

a=['aaa','bbb','oooo','qqqq','gggg']

def main(request, template_name='index.html'):
    context ={
              'n':range(len(a)),
              'a':a,
    }
    return render_to_response(template_name, context)

это мой HTML:

{% for i in n %}

    {{a.i}} ww {{a.i+1}}

{% endfor %}

это шоу ww ww ww ww ww,

но я хочу показать 'aaawwbbb bbbwwoooo oooowwqqqq qqqqwwgggg ggggww'

так что я могу сделать,

спасибо

Ответы [ 3 ]

1 голос
/ 16 февраля 2011
>>> c=Context({'a':['aaa', 'bbb', 'oooo', 'qqqq', 'gggg']})
>>> Template("{% for x in a %}{% if not forloop.first %}{{ x }} {% endif %}{{ x }}ww{% endfor %}").render(c)
u'aaawwbbb bbbwwoooo oooowwqqqq qqqqwwgggg ggggww'
0 голосов
/ 16 февраля 2011

Вы можете создать собственный фильтр, http://docs.djangoproject.com/en/1.2/howto/custom-template-tags/ и получить что-то вроде этого:

# myfilters.py
def return_element(list, index):
    return list[index+1]

И тогда вы можете использовать его из шаблона,

{% include myfilters %}
...
{% for i in a %}
    {{ i }}ww{{ a|return_element:forloop.counter0 }}
{% endfor %}

Переменная шаблона forloop автоматически устанавливается в теге for. Forloop.counter0 возвращает количество циклов, в которое вводится цикл, и использует нулевое индексирование.

0 голосов
/ 16 февраля 2011

Не делай этого.Итерация по списку напрямую.

context = {
    'a': a
}
return render_to_response(template_name, context)

И в шаблоне:

{% for x in a %}
    {{ x }}
{% endfor %}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...