我想将模型传递给模板base.html。
我读到了自定义标签,并尝试执行此操作。它没有抛出任何错误,但也没有工作。
我的代码:
base.html文件:
{% load staticfiles %}
{% load tags %}
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<ul class="dropdown-menu" role="menu">
{% for league in get_my_leagues %}
<li> ddddd {{ league.league_name }}</li>
{% endfor %}
</ul>
{% block content %}
{% endblock %}
</body>
</html>
现在,tags.py:
from django.template import Library
from login.models import League
register = Library()
@register.inclusion_tag('base.html')
def get_my_leagues():
return League.objects.all()
register.tag('get_my_leagues', get_my_leagues)
答案 0 :(得分:1)
使用{% for x in y %}
时,预计y
是模板中的上下文变量,而不是模板标记。
包含标记的作用是呈现模板(作为参数传递给inclusion_tag
装饰器的模板),并将结果插入到使用包含标记的位置。
您可能希望将get_my_leagues
注册为simple tag(或者assignment tag,如果您使用的是早于1.9的Django),并按照以下方式使用它:
{% get_my_leagues as my_leagues %}
{% for league in my_leagues %}
...
{% endfor %}
答案 1 :(得分:0)
人。
我在这里只是为了告诉我找到了解决问题的方法。我使用Context Processors来完成这项工作。
谢谢大家的回答!