python - 无法注册 django 自定义模板标签
问题描述
我想注册 3 个自定义模板标签并在我的项目的所有页面中显示它们生成的信息。我已阅读文档并创建了以下文件:
blog_tags.py
from django import template
from django.db.models import Count
from ..models import Post
register = template.Library()
@register.simple_tag
def total_posts():
return Post.published.count()
@register.inclusion_tag("blog/post/latest_posts.html")
def show_latest_posts(count=5):
latest_posts = Post.published.order_by("-publish")[:count]
return {"latest_posts": latest_posts}
@register.simple_tag
def get_most_commented_posts(count=5):
return Post.published.annotate(total_comments=Count("comments")).order_by(
"-total_comments"
)[:count]
还有我的模板:base.html
{% load static %}
{% load blog_tags %}
<!DOCTYPE html>
<html>
<head>
<title>
{% block title %}{% endblock %}
</title>
<link href="{% static "css/blog.css" %}" rel="stylesheet">
</head>
<body>
<div id="content">
{% block content %}{% endblock %}
</div>
<div id="sidebar">
<h2>
My blog</h2>
<p>
This is my blog. I've written
{% total_posts %}
posts so far.</p>
<h3>
Latest posts</h3>
{% show_latest_posts 3 %}
<h3>
Most commented posts</h3>
{% get_most_commented_posts as most_commented_posts %}
<ul>
{% for post in most_commented_posts %}
<li>
<a href="{{ post.get_absolute_url }}">
{{ post.title }}
</a>
</li>
{% endfor %}
</ul>
</div>
</body>
</html>
但是,标签没有被加载。页面打不开。相反,我收到以下错误:Invalid block tag on line 3: 'total_posts'. Did you forget to register or load this tag?
如您所见,我确实已经加载了我的标签,{% load blog_tags %}
所以我不明白出了什么问题。
这是我的代码的文件夹结构:
解决方案
如Django 文档 Development server won’t automatically restart
中所述。
因此,重新启动您的开发服务器将解决您的问题。
推荐阅读
- python - 如何计算 Pandas DataFrame 中的利润率
- sql - 自联接 Oracle SQL
- c++ - 客户端上的 Grpc 访问冲突
- flutter - 如何在颤振中使用 MultipartFile 将资产图像发布到服务器
- java - 碰撞检测仅在物体正好击中中心时起作用
- python - Dynamically adding descriptors to a class
- add - Typo3 9 RTE CK_Editor 4 data-attribute in span 保存后删除
- spark-ar-studio - 如何在脚本中获取循环动画进度(Spark AR)
- templates - 错误 C2143:语法错误:在使用模板类时,在 '<' 之前缺少 ','
- python - 如何在 sklearn 中获取用于二进制分类的 roc auc