导入错误:找不到名为remote的模块。

4

我正在尝试在Django上创建以下模板标签:

from django import template
from django.utils import translation
from player.remote import MongoDb

register = template.Library()

@register.assignment_tag
def load_item(itemId):
  mongo = MongoDb.instance()
  return mongo['lol-%s' % translation.get_language()]['items'].find_one({'id': int(itemId)})

但是每当我尝试加载它时,它总是以以下错误失败:

'items' is not a valid tag library: ImportError raised loading tags.templatetags.items: No module named remote

一些注意事项:

  • 我可以使用manage.py shell导入MongoDb
  • 我的项目路径在Python Path上
  • 'player'目前在'settings'下的'INSTALLED_APPS'区域中。
  • 我已经尝试过:'player.remote','remote','app.player.remote','teemo.app.player.remote','teemo.player.remote'
  • 我正在使用内置服务器,因为我仍在开发中
  • 我正在使用Ubuntu上的django 1.8和python 2.7.6

结构(缺少很多文件,但总体上):

teemo
  manage.py
  player
    __init__.py
    remote.py
  templates
    player
      resume.html <-- Importing 'items' tags
  tags
    templatetags
      __init__.py
      items.py

我在这里缺少什么?


你尝试过使用 'teemo.player.remote' 吗? - fasouto
是的,抱歉,忘记在那里添加该选项了。 - Adriano Martins
是的,它确实有效,我已经将其添加到帖子的“注释”中了。 - Adriano Martins
2个回答

0

您需要将'teemo.tags'添加到INSTALLED_APPS中,以便Django可以找到您的templatetags

编辑

还有一个问题是:您似乎缺少teemo/tags/__init__.py文件。


标签已经在INSTALLED_APPS中安装。我有几个其他的标签是完全可用的,但由于某种奇怪的原因,“player.remote”无法工作。 - Adriano Martins
我的(希望是)临时解决方案就是简单地创建一个新的应用程序并将文件移动到那里。 - Adriano Martins
@AdrianoMartins,在标签文件夹中加入一个__init__.py文件怎么样? :) - lehins
已经搞定了!:( - 我干脆放弃了,临时解决方案就当正式的吧,哈哈。 - Adriano Martins

0
问题是我试图覆盖items标签,覆盖了字典items方法。
在这种情况下,它正在寻找字典内的items,而这不是我所期望的。

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