我已经使用几个模板构建了网站,但我想实现如何从base.html中读取菜单,这将在整个网站上可见,我不想将其添加到每个模板。我在文档中找到了POLL示例:
https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#inclusion-tags
错误的屏幕截图
/的TemplateSyntaxError 无效的块标记:'show_menu'
在app下我做了: templatetags / menu.py
from django import template
register = template.Library()
@register.inclusion_tag('menu.html')
def show_menu(menu):
menu = Menu.objects.all()
return {'menu': menu}
base.html文件
{% load menu %}
<!DOCTYPE html>
<html lang="en">
<head></head>
<body>
{% show_menu menu %}
{% block content %}{% endblock %}
</body>
</html>
的index.html
{% extends "base.html" %}
{% block content %}
Hello World! (Content)
{% endblock %}
请帮忙,我做错了什么? 感谢
答案 0 :(得分:3)
您似乎没有真正阅读过您链接到的文档页面。首先,它提供了有关放置模板标记代码的位置的明确说明:不在view.py中,而是放在应用程序内templatetags
目录内的新文件中。
其次,该页面还说明您需要加载每个使用它们的模板中使用的标记库:所以假设您已将标记放入templatetags / menu.py,那么您将{% load menu %}
。