我的想法是在我的案例中使用我的观点地址hikes.views.displayHike
并从我的数据库中传递不同的id号,以便在模板中有一个for循环生成的链接列表。如果我这样做:
{%block content%}
{% for x in data %}
<a href="{%url hikes.views.displayHike x.hikeId:{{x.hikeId}}%}"> {{x.name}}</a>
{% endfor %}
{%endblock%}
或
{%block content%}
{% for x in data %}
<a href="{%url 'hikes.views.displayHike' {{x.hikeId}}%}"> {{x.name}}</a>
{% endfor %}
{%endblock%}
上述两种观点都很简单:
def hikeHome(request):
data = Hikes.objects.all()
return render(request, 'hikeHome.html', {'data':data})
我收到语法错误:
Django Version: 1.7
Exception Type: TemplateSyntaxError
Exception Value:
Could not parse the remainder: ':{{x.hikeId}}' from 'x.hikeId:{{x.hikeId}}'
但是如果我硬编码这样的值:
{%block content%}
{% for x in data %}
<a href="{%url 'hikes.views.displayHike' 1 %}"> {{x.name}}</a>
{% endfor %}
{%endblock%}
它工作得很好,但我不希望有一个硬编码值......我希望能够将它放在for循环中让它运行并显示用户的所有可能链接。
我还尝试在视图中创建URL,将其放入字典中并将名称作为键访问,将值作为URL访问,如下所示:
视图:
def hikeHome(request):
hikes = Hikes.objects.all()
data = dict()
for x in hikes:
data[x.name] = reverse(displayHike,args=[1])
return render(request, 'hikeHome.html', {'data':data})
模板:
{%block content%}
{% for x, y in data.items %}
<a href="{%url {{y}}%}"> {{x}}</a>
{% endfor %}
{%endblock%}`
这会收到错误消息:
Django Version: 1.7
Exception Type: TemplateSyntaxError
Exception Value:
Could not parse the remainder: '{{y}}' from '{{y}}'
答案 0 :(得分:2)
阅读文档 - https://docs.djangoproject.com/en/1.7/ref/templates/builtins/
{% block content %}
{% for x in data %}
<a href="{%url 'hikes.views.displayHike' x.hikeId %}"> {{x.name}}</a>
{% endfor %}
{% endblock content %}
应该做的伎俩。