Я пытаюсь подобрать 3 случайных числа из списка из 20 чисел.
В views.py я определил эту переменную:
nums = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20]
В моем шаблоне index.html:
{{ nums|random }} - {{ nums|random }} - {{ nums|random }}
Я хочу получить 3 разных числа, но я не знаю, какой фильтр / тег применять.
Я пробовал операторы if / else для циклов (если есть дубликат, я хочу перерисовать), но я не удовлетворен результатами, и я почти уверен, что для этого есть простой фильтр.
2 ответа
Я не думаю, что есть разумный способ сделать это с помощью встроенных фильтров. Я просто выбрал бы числа в представлении и передал это контексту.
Если ваш рендеринг последовательный, и вы хотите делать это во многих местах, вы можете написать собственный тег шаблона, например:
import random
from django import template
register = template.Library()
@register.simple_tag
def random_sample(population, k):
return ' - '.join(str(choice) for choice in random.sample(population, k))
Тогда {% random_sample nums 3 %}
в вашем шаблоне.
Но я думаю, что делать это с точки зрения проще.
Вы можете создать тег шаблона с этой функциональностью, чтобы решить вашу проблему.
YourApp / templatetags / custom_choice_tags.py
from django import template
import random
register = template.Library()
@register.assignment_tag
def get_three_unique_random_values_from_list(value_list):
random_choices = random.sample(value_list, 3)
selected_choices = {
'first_choice': random_choices[0],
'second_choice': random_choices[1],
'third_choice': random_choices[2],
}
return selected_choices
А затем в вашем template.html:
{% load custom_choice_tags %}
{% get_three_unique_random_values_from_list random_list as random_choices %}
{{ random_choices }}
Переменная random_list будет передана из вашего представления в контекст шаблона в этом примере.
Похожие вопросы
Новые вопросы
django
Django - это серверная платформа веб-приложений с открытым исходным кодом, написанная на Python. Он разработан для сокращения усилий, необходимых для создания сложных веб-сайтов и веб-приложений, управляемых данными, с особым упором на меньшее количество кода, отсутствие избыточности и более явное, чем неявное.