Я изучаю, как создавать и использовать пользовательские теги шаблона. official documentation отлично подходит для описания того, как добавить функциональность templatetag и т. Д., Но он не говорит о том, чтобы создать его.Django Custom Template Tag не возвращает никакого значения
Моя проблема заключается в том, что я пытаюсь вернуть значение выбранного случайного URL-адреса в файле views.py, но ничего не появляется на моей странице.
views.py
Идея в том, что survey_url
(шаблонный тег) принимает случайное значение URL, чтобы направить пользователя к одному из трех опросов, когда они нажимают на кнопку старт ..
def start(request):
survey_urls = ['/surveyone/', '/surveytwo/', '/surveythree/']
survey_url = random.choice(surveys)
return render(request, 'start.html', {'survey_url': survey_url})
.html
Этот случайный URL-адрес затем предназначается, чтобы быть загружены в href" "
в виде кнопки на start.html. Я загружаю survey_extras
и включил тег шаблона.
{% load survey_extras %}
<a class="btn btn-success" href="{{survey_url}}">START</a>
Структура проекта
Я создал каталог templatetags внутри моего приложения и включал в себя __init__.py
файл
survey_extras.py
Это где я получаю бит застрял. Кажется, в Интернете нет много обучающих программ (которые я могу найти), которые касаются того, как его кодировать. Я смотрел на this video, но его гораздо сложнее, чем мне нужно. Я также рассматривал этот вопрос Django - Simple custom template tag example, но, похоже, не понял его.
from django import template
register = template.Library()
from survey.views import start
@register.simpletag
def survey_url():
return ''
В настоящее время я не получаю ошибок, и когда я проверяю элемент кнопки, код дополнительного кода не появляется.
Может ли кто-нибудь сказать мне, где я иду не так? Спасибо ;-)
Я не понимаю, почему вы хотите использовать шаблонный тег здесь. Вы отправляете значение прямо из представления в шаблон: никаких новых тегов не требуется. –
Не быть грубым, но почему вы ожидаете, что значение будет присутствовать в шаблоне, когда тег шаблона вернет пустую строку? – Brandon