Как выбрать случайный элемент из списка в шаблоне django?

#html #css #django #list #templates

#HTML #css #джанго #Список #шаблоны

Вопрос:

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

шаблон

 <div class="container-fluid center">

        <a class="btn waves-effect waves-light" href={{ random_link }}>Redirect me to a cute pic
        <i class="large material-icons left">favorite</i>
        <i class="large material-icons right">favorite_border</i>
        </a>

</div>
 

views.py

 reddit = praw.Reddit(client_id='L685-1uBBrLbKQ', client_secret='_Fk5nW1L2h3VRR6BVnkusMh43QQ_gg',
                         user_agent='Shivam Anand')

    top_natureismetal = reddit.subreddit('natureismetal').top(limit=100)

    # generator only generated once for loop run

    nature_links = []

    for post in top_natureismetal:
        nature_links.append(post.url)

    import random

    random_link = random.choice(nature_links) #the part i want html to do...
 

Комментарии:

1. Если вы передаете список в шаблон, то вы можете использовать тег шаблона «random» docs.djangoproject.com/en/3.1/ref/templates/builtins/#random

2. В чем причина НЕ делать случайный выбор в представлении? Потому что использование случайного тега шаблона будет иметь тот же результат с точки зрения пользователя: в HTML-файле будет (во время рендеринга случайно сгенерированная) ссылка.

3. Единственная причина, по которой я вижу, чтобы не отправлять ни одной ссылки на html, заключается в том, что генерация случайной ссылки должна быть переделана во время взаимодействия пользователя с вашей страницей, и перенаправление происходит только один раз, когда пользователь «доволен» представленным случайным выбором и нажимает кнопку. Но тогда это программирование на стороне клиента с помощью js. Может быть, я неправильно понимаю вашу точку зрения.

4. @Lemon. py огромное спасибо, что сработало! любопытно: есть ли способ менять ссылку каждый раз при нажатии кнопки? вместо того, чтобы снова загружать веб-страницу.

5. @Razenstein спасибо за ваш комментарий! я подумал: после загрузки веб-страницы не должно быть временной задержки при нажатии на ссылку кнопки, что, как я думал, будет иметь место, если есть другой слой views, который вычисляет случайную ссылку после нажатия кнопки, хотя это может позаботиться о случайной ссылке при каждом нажатии кнопки об обновлении страницы ..