gpt4 book ai didi

python - 在 Django 中实现自定义模板标签时遇到问题

转载 作者:行者123 更新时间:2023-11-28 20:51:29 28 4
gpt4 key购买 nike

我正在尝试使用我的应用程序实现一些自定义模板标签,以更好地构建它。烦人的部分是我已经按照教程类型的帖子获取代码,但它仍然不起作用。

我试着关注 thiscurrent_time实现一些标签,但出现我不理解的错误。

首先,最新帖子的过滤器,或者在我的情况下,最新屏幕提供异常值:没有名为 gallery 的模块

我的项目名为“S3gallery”,我的应用名为“gallery”,我的模型名为“screenshots”。标签的模型 arg 在文档中说它需要 app_name.Model_name 这是我给它的,所以我坚持这一点。

我的自定义标签代码是这样的;

from django.template import Library, Node
from django.db.models import get_model

register = Library()

class LatestContentNode(Node):
def __init__(self, model, num, varname):
self.num, self.varname = num, varname
self.model = get_model(*model.split('.'))

def render(self, context):
context[self.varname] = self.model._default_manager.all()[:self.num]
return ''

def get_latest(parser, token):
bits = token.contents.split()

if len(bits) != 5:
raise TemplateSyntaxError, "get_latest_screens tag takes exactly three arguments"
if bits[3] != 'as':
raise TemplateSyntaxError, "second argument to the get_latest_screens tag must be 'as'"

return LatestContentNode(bits[1], bits[2], bits[4])

get_latest = register.tag(get_latest)

我尝试使用 {% load get_latest gallery.screenshots 5 as recent_screens %} 在模板中加载它,我看到的示例没有在标签中使用“加载”,但是如果我这样做是因为 Django 无法识别标签。我是否迷失了方向,但认为我会走正确的路。对此的任何帮助将不胜感激:)

最佳答案

{% load %} 模板标签用于加载您的自定义模板标签,而不是渲染它。如果您的 get_latest 标签是在模块 my_tags.py 中定义的,那么您应该使用

加载它
{% load my_tags %}

参见 code layout文档部分以获取更多信息。

在模板中加载标签后,您就可以使用它了:

{% get_latest gallery.screenshots 5 as recent_screens %}

关于python - 在 Django 中实现自定义模板标签时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9721370/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com