django 1.11 自定义标签失败


参考资料: 追梦人物 - django教程 - 自定义模版标签


所有的内容都和教程的一模一样,一直提示“TemplateSyntaxError at /archives/ Invalid block tag on line 37: 'get_categories'. Did you forget to register or load this tag?”

试过 重启还是一样的问题。官方教程也去看了几遍,也没找到原因。 想问下大家是什么原因?

过程如下
1. templatetags目录下添加一个blog_tags.py自定义标签:

from ..models import Category

from django import template

register = template.Library()


@register.simple_tag
def get_categories():
    return Category.objects.all()
  1. 在模版中加载
{% load blog_tags %}
  1. 模版中使用标签
{% get_categories as category_list %}   
    <ul>    
    {% for category in category_list %}   
    <li>    
        <a href="#">{{ category.name }}</a>    
    </li>    
    {% empty %}    
    暂无分类!    
    {% endfor %}    
{% endget_categories %}    
  • 5 条回复 | 4 人参与
  • 怎么都没人回复的e? 这也是个功能点呀 随机建立一个项目,马上就能重现我的内容 都没人愿意回复么?

    没人愿意探讨这个问题么? 这是大django论坛呀

  • 已解决

    我是在base.html里面加载blog_tags,发现经过继承模版就会报错,把{% load blog_tags %}放在具体显示的页面里面就可以正常使用自定义模版标签。

  • 得看仔细点哟,周末人都出去耍了,哈哈

  • 对 django 文档有说 load 是无法继承的,所以每个模板都要申明。

  • 懒人,下级HTML我都是从base.html copy过去的,刚好避过这个问题・_・

添加一条新回复
登录 或者 注册 后发表回复