【发布时间】:2012-04-01 01:23:15
【问题描述】:
我正在尝试在我的应用程序中实现一些自定义模板标签,并更好地构建它。 烦人的部分是我已经按照教程类型的帖子获取代码,但它仍然不起作用。
我尝试按照this 和current_time 来实现一些标签,但我遇到了我不理解的错误。
首先,最新帖子的过滤器,或者在我的情况下,最新的屏幕给出了
Exception Value: No module named gallery
我的项目名为“S3gallery”,我的应用名为“gallery”,我的模型名为“screenshots”。标签的模型参数在文档中说它需要 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 将无法识别该标签。我是否迷失了方向,但认为我会走对路。
对此的任何帮助将不胜感激:)
【问题讨论】:
标签: python django django-custom-tags