1
我已经建立了几个模板的网站,但我想实现如何从base.html中的数据库读取菜单,整个网站,我不想将它添加到每个模板。我在docs发现POLL例如:在全局视图(base.html)中的Django动态菜单在所有模板中都可见
https://docs.djangoproject.com/en/dev/howto/custom-template-tags/#inclusion-tags
截图错误
TemplateSyntaxError在/ 无效块标记: 'show_menu'
在应用程序下,我做了: 个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 %}
请帮帮忙,我在做什么错? 谢谢
我编辑了代码,如上所述,我在应用程序下创建了文件夹TEMPLATETAGS,并将MENU.PY文件与代码一起。然后我做了模板:{%load menu%},现在我得到了这个错误:菜单'不是一个有效的标签库:找不到模板库菜单,试过django.templatetags.menu,django.contrib.staticfiles.templatetags。菜单,django_admin_bootstrapped.templatetags.menu,django.contrib.admin.templatetags.menu,http://cl.ly/image/3J0t3N061e12 – Radek
我发现这个问题,在templatetags目录下添加“__init__.py”。现在我遇到的问题是,“全局名称”菜单'未定义“,如果我从模型导入菜单中添加了来自django.db导入模型 ,它将引发错误:”'菜单'不是有效的标记库: ImportError引发加载ng.templatetags.menu:没有模块命名模型“ – Radek
为什么要从'django.db'导入模型?无论它在哪里,它们都在您的应用中。 '从myapp.models导入Menu'。 –