我试图制作一个模板标签来构建网站中的所有栏。我跟着所有的文档,但它仍然无法正常工作。
我创建了应用“栏”,并在settings.py中添加到应用中 在/ bar /
-- __init__.py
-- templatetags/
-- -- nav_bar.py
-- -- __init__.py
/ templates /中的- top_bar.html
现在nav_bar.py是:
from django import template
register = template.Library()
@register.inclusion_tag('top_bar.html')
def show_topbar():
user_login = 'prova'
return {'user_login': user_login}
它没有意义,但只是为了尝试。将来,user_login将显示用户是否已记录,例如request.user.is_authenticated()和其他信息。
top_bar.html is:
<div class="navbar navbar-inverse navbar-fixed-top">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="#">SkillAsk.com</a>
</div>
<div class="navbar-collapse collapse">
<ul class="nav navbar-nav">
<li class="active"><a href="#">Home</a></li>
<li><a href="#about">About</a></li>
<li><a href="#contact">Contact {{ user }}'s</a></li>
{% if user_login %}
<div class="navbar-form navbar-right"><a href="/accounts/logout/" class="btn btn-danger">Log Out</a>
</div>
<ul class="nav navbar-nav navbar-right">
<li id="fat-menu" class="dropdown">
<a href="#" id="drop3" role="button" class="dropdown-toggle" data-toggle="dropdown">
{{ user.username }}'s <b class="caret"></b></a>
<ul class="dropdown-menu" role="menu" aria-labelledby="drop3">
<li role="presentation"><a role="menuitem" tabindex="-1" href="/backoffice/">Profilo</a></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="/backoffice/setting">Impostazioni</a></li>
<li role="presentation" class="divider"></li>
<li role="presentation"><a role="menuitem" tabindex="-1" href="/backoffice/skills/add">Aggiungi Skill</a></li>
</ul>
</li>
</ul>
<!-- Authenticate account menu -->
{% else %}
<form action="/accounts/login/?next=/backoffice" method="post" accept-charset="utf-8" class="navbar-form navbar-right">{% csrf_token %}
<div class="form-group">
<input type="text" placeholder="UserName" name="username" id="username" class="form-control">
</div>
<div class="form-group">
<input type="password" placeholder="Password" name="password" id="password" class="form-control">
</div>
<button type="submit" class="btn btn-success">Sign in</button>
</form>
{% endif %}
</div><!--/.navbar-collapse -->
</div>
</div>
(我尝试使用非常简单的模板而不是所有内容,但不会改变结果)
现在在base.html我用
加载了模板标签{% load staticfiles %}
{% load nav_bar %}
bla bla bla
bla bla
并打印模板
{{ show_topbar }}
...我想把酒吧放在哪里。它看起来非常非常简单,但输出没有任何错误。 如果我删除模板top_bar.html没有任何变化,没有错误...如果我更改模板名称,没有错误......
恕我直言,问题在于寄存器包含...最初我想使用一些response_to_render作为回报......但是docs中的示例不使用render。 为什么我不能在每个页面打印我的模板?我很好奇! 谢谢
注意:仅供参考,我使用另一个名为home.html的模板来扩展基础... 附:在设置中我定义了模板目录...所有其他模板仍在工作。
答案 0 :(得分:1)
答案 1 :(得分:1)
您使用变量语法而不是模板标记语法来调用您的标记。你应该这样做:
{% show_topbar %}