模板语法错误:'settings_tags' 不是一个有效的标签库。

7

当我尝试运行我的Django应用程序中tests.py中编写的测试用例时,出现了以下错误:

def test_accounts_register( self ):
    self.url = 'http://royalflag.com.pk/accounts/register/'
    self.c = Client()
    self.values = {
        'email': 'bilal@gmail.com',
        'first_name': 'bilal',
        'last_name': 'bash',
        'password1': 'bilal',
        'password2': 'bilal',
    }
    self.response = self.c.post( self.url, self.values )

我的Django版本是1.2.1,Python版本是2.6,Satchmo版本是0.9.2-pre hg-unknown。

完整的错误日志如下:

    .E....
======================================================================
ERROR: test_accounts_register (administration.tests.AccountsRegisterTestCase)
----------------------------------------------------------------------
Traceback (most recent call last):
  File "C:\pytho\satchmo\administration\tests.py", line 53, in test_accounts_reg
ister
    self.response = self.c.get( self.url )
  File "C:\django\django\test\client.py", line 290, in get
    response = self.request(**r)
  File "C:\django\django\test\client.py", line 230, in request
    response = self.handler(environ)
  File "C:\django\django\test\client.py", line 74, in __call__
    response = self.get_response(request)
  File "C:\django\django\core\handlers\base.py", line 141, in get_response
    return self.handle_uncaught_exception(request, resolver, sys.exc_info())
  File "C:\django\django\core\handlers\base.py", line 180, in handle_uncaught_ex
ception
    return callback(request, **param_dict)
  File "C:\django\django\views\defaults.py", line 23, in server_error
    t = loader.get_template(template_name) # You need to create a 500.html templ
ate.
  File "C:\django\django\template\loader.py", line 157, in get_template
    template, origin = find_template(template_name)
  File "C:\django\django\template\loader.py", line 134, in find_template
    source, display_name = loader(name, dirs)
  File "C:\django\django\template\loader.py", line 42, in __call__
    return self.load_template(template_name, template_dirs)
  File "C:\django\django\template\loader.py", line 48, in load_template
    template = get_template_from_string(source, origin, template_name)
  File "C:\django\django\template\loader.py", line 168, in get_template_from_str
ing
    return Template(source, origin, name)
  File "C:\django\django\template\__init__.py", line 158, in __init__
    self.nodelist = compile_string(template_string, origin)
  File "C:\django\django\template\__init__.py", line 186, in compile_string
    return parser.parse()
  File "C:\django\django\template\__init__.py", line 282, in parse
    compiled_result = compile_func(self, token)
  File "C:\django\django\template\defaulttags.py", line 921, in load
    (taglib, e))
TemplateSyntaxError: 'settings_tags' is not a valid tag library: Template librar
y settings_tags not found, tried django.templatetags.settings_tags,satchmo_store
.shop.templatetags.settings_tags,django.contrib.admin.templatetags.settings_tags
,django.contrib.comments.templatetags.settings_tags,django.contrib.humanize.temp
latetags.settings_tags,livesettings.templatetags.settings_tags,sorl.thumbnail.te
mplatetags.settings_tags,satchmo_store.contact.templatetags.settings_tags,tax.te
mplatetags.settings_tags,pagination.templatetags.settings_tags,product.templatet
ags.settings_tags,payment.templatetags.settings_tags,payment.modules.giftcertifi
cate.templatetags.settings_tags,satchmo_utils.templatetags.settings_tags,app_plu
gins.templatetags.settings_tags,tinymce.templatetags.settings_tags

----------------------------------------------------------------------
Ran 6 tests in 47.468s

FAILED (errors=1)
Destroying test database 'default'...
4个回答

18

我觉得你的模板中可能有像{% load settings_tags %}这样的代码。Django会在已安装的应用程序目录中查找templatetags/settings_tags.py文件。如果没有找到该文件,则会出现此结果。也许包含它的应用程序未在INSTALLED_APPS中,或者可能是个打字错误。当你在浏览器中输入此URL时,应该会得到相同的错误。


感谢您的帮助:我将settings_tag放置在我的应用程序目录下,文件夹名为templatetags。 - Bilal Basharat
61
我不确定这是否是正常行为,但我不得不重新启动服务器才能加载筛选器文件。 - AJJ
3
我也是。我重新启动了服务器,然后它就开始工作了。 - Kris Jenkins
4
服务器重启有所帮助!这肯定是个bug——而且你,@AJweb先生表现得很棒! - Andriy Drozdyuk
2
我认为重新启动服务器是必要的。在我的情况下,重新启动服务器也起作用了。 - Rajat Saxena

15
有时候这会发生在你忘记在包中放置一个 __ init __.py 文件时。

1
不错,我太蠢了 >_<' - maazza
__init__.py文件需要包含特定的内容吗?还是应该为空的? - gtlambert
它为空也没关系。 - aladagemre

7

就像@AJJ所说的那样,您可能需要重新启动服务器以加载新标签。


重新加载服务器非常重要! - gtlambert

0

这是该软件包的常见问题。当您从pypi获取它时,它不包含模板标签:settings_tag.py,这将导致错误'settings_tags' is not a valid tag library: Template library settings_tags not found.

当前的解决方案是从github zip安装它。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接