【发布时间】:2014-10-17 10:06:05
【问题描述】:
我正在学习如何创建和使用自定义模板标签。 official documentation 非常擅长描述如何添加模板标签功能等,但它并没有说明如何实际创建模板标签。
我的问题是我试图在我的 views.py 文件中返回以下随机 url 选择的值,但我的页面中没有出现任何内容。
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 将被加载到 start.html 上的按钮中的 href" " 中。我正在加载 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 ''
目前我没有收到任何错误,当我检查按钮元素时没有出现额外的 URL 代码。
谁能告诉我哪里出错了?谢谢;-)
【问题讨论】:
-
我不明白您为什么要在此处使用自定义模板标签。您将值直接从视图发送到模板:不需要新标签。
-
不要粗鲁,但是当您的模板标签返回一个空字符串时,您为什么希望模板中存在一个值?