Django - Создание ссылки, которая отображается на нескольких разных страницах? - PullRequest
0 голосов
/ 24 мая 2018

Я новичок в кодировании и пытаюсь создать ссылку, используя Django (если это возможно), которая отправляет пользователя на три разных URL-адреса с равной вероятностью перенаправления на каждый из них.Таким образом, есть только одна кнопка для выбора, но она может иметь три разных результата.

Я бы хотел, чтобы ссылка была просто кнопкой навигационной панели начальной загрузки.На данный момент у меня есть следующий код, который прекрасно работает для единственного базового URL-адреса html (surprise.html), который я создал:

Соответствующий код в:

Просмотры:

def surprise(request):
    return render(request, 'sitepages/surprise.html') 

Шаблоны:

<a class="nav-item nav-link" href="{% url 'surprise' %}">Surprise</a>

urls.py:

url(r'^surprise/', sitepages.views.surprise, name="surprise"),

Таким образом, это перенаправит на основную внутреннюю HTML-страницу.Но мне было интересно, можно ли добавить еще один href в код шаблона?

Возможно, понадобится новая модель?Я думал об использовании random.choice с тремя разными URL-адресами в списке, но кажется, что они должны быть в типе str, и это за мной.

Любые предложения или советы будут с благодарностью.Спасибо!

1 Ответ

0 голосов
/ 24 мая 2018

Я бы предложил использовать пользовательский тег шаблона или рандомизировать URL-адрес в представлении перед рендерингом шаблона и передать его шаблону через контекст.Вот решение с использованием templatetag:

имя_приложения / templatetags / util_tags.py (не забудьте добавить __init__.py файл)

import random 
from django import template
from django.urls import reverse

register = template.Library()

@register.simple_tag
def random_url():
    list_of_route_names = ['view1', 'view2', 'view3'] # names from urls.py
    return reverse(random.choice(list_of_route_names))

template.html:

{% load util_tags %}
<a class="nav-item nav-link" href="{% random_url %}">Surprise</a>

urls.py:

urlpatterns = [
url(r'^view1/', sitepages.views.view1, name="view1"),
url(r'^view2/', sitepages.views.view2, name="view2"),
url(r'^view3/', sitepages.views.view3, name="view3"),
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...