Создание облака тегов из списка в Django? - PullRequest
2 голосов
/ 08 марта 2011

Я получаю список из вызова API.Я хотел бы иметь возможность отображать облако тегов на основе слов в списке.

Я видел несколько других возможных решений, которые генерируют HTML в функции просмотра, но если я использую шаблоны, как я могу обойти этот шаг?Кроме того, такие решения, как использование плагина django , похоже, требуют использования моделей, которые, по моему мнению, не нужны в моем случае.

Ответы [ 2 ]

7 голосов
/ 08 марта 2011

Есть много способов сделать это. Лично я бы манипулировал списком тегов в этом формате в вашем представлении:

tags = [
    { 'tag': 'django', 'size': 10 },
    { 'tag': 'python', 'size': 8 },
    { 'tag': 'Australia', 'size': 1 },
    { 'tag': 'coffee', 'size': 6 },
    { 'tag': 'pycon', 'size': 3 },
    { 'tag': 'html', 'size': 9 },
]

В вашем шаблоне:

<div class="tag-cloud">
    {% for t in tags %}
        <a href="/blog/tag/{{ t.tag }}/" class="size-{{ t.size }}">{{ t.tag }}</a> 
    {% endfor %}
</div>

В вашем CSS:

.tag-cloud a.size-1 { font-size: 1.1em }
.tag-cloud a.size-2 { font-size: 1.2em }
.tag-cloud a.size-3 { font-size: 1.3em }
.tag-cloud a.size-4 { font-size: 1.4em }
.tag-cloud a.size-5 { font-size: 1.5em }
.tag-cloud a.size-6 { font-size: 1.6em }
.tag-cloud a.size-7 { font-size: 1.7em }
.tag-cloud a.size-8 { font-size: 1.8em }
.tag-cloud a.size-9 { font-size: 1.9em }
.tag-cloud a.size-10 { font-size: 2em }
0 голосов
/ 08 марта 2011

Переберите список тегов в шаблоне и используйте «случайный» фильтр для целочисленного списка для встроенного стиля размера шрифта.py

...
sizes = [10, 12, 14, 16, 18, 20]
tags = ["one", "two", "three"]
...

index.html

...
{% for tag in tags %}
    <a href="/some/url/with/{{ tag }}/" style="font-size: {{ sizes|random }}px">{{ tag }}</a>
{% endfor %}
...
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...