1

我正在关注Snippets 上的 Wagtail 文档,以确保我可以在创建自己的文件之前使其正常工作。却遇到了绊脚石。我已经在 models.py 文件中添加了广告模型,现在正在创建 demo_tags.py 文件。目前它显示 -

from django import template
from demo.models import *

register = template.Library()

... #don't know if something is supposed to go in here

# Advert snippets
@register.inclusion_tag('demo/tags/adverts.html', takes_context=True)
def adverts(context):
    return {
        'adverts': Advert.objects.all(),
        'request': context['request'],
    }

当我运行开发服务器时,该from demo.models import *行会产生InvalidTemplateLibrary错误。

显然我应该用一些东西来改变'demo'和'*',但是什么?

此外,在创建名为 adverts.html 的模板时,它应该放在哪个目录中?模板标签之一,或与其他博客模板?

谢谢。

4

1 回答 1

0

demo.modelsAdvert在 Wagtail 演示网站上定义模型的模块。如果您在其他地方定义了这个 - 例如home/models.py在新 Wagtail 项目上创建的文件 - 您需要相应地更改它:

from home.models import *

templates/demo/tags/adverts.html您应该在应用目录中的位置创建 adverts.html 。更一般地 - Django 将在您给定的路径('demo/tags/adverts.html')中查找相对于项目中所有有效模板位置的模板 - 这通常意味着存在的所有应用程序的“模板”目录在你的项目中。

于 2017-03-06T11:16:45.423 回答