【问题标题】:ImportError: No module named remoteImportError:没有名为远程的模块
【发布时间】:2015-09-30 15:52:18
【问题描述】:

我正在尝试在 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 路径上
  • “播放器”当前位于“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'吗?
  • 是的,抱歉,忘记在此处添加该选项。
  • 是的,它确实有效,已将其添加到帖子的“注释”中。

标签: python django


【解决方案1】:

您需要将'teemo.tags' 添加到INSTALLED_APPS 以便django 找到您的templatetags

编辑

您似乎还缺少:teemo/tags/__init__.py 文件。

【讨论】:

  • 标签已在 INSTALLED_APPS 下。我还有其他几个功能齐全的标签,但出于某种奇怪的原因,“player.remote”不起作用。
  • 我(希望是)临时解决方案是简单地创建一个新应用并将文件移动到那里。
  • @AdrianoMartins 如何在标签文件夹中创建一个__init__.py 文件。 :)
  • 已经在那里了! :( - 我只是放弃了,我正在使用临时解决方案作为官方解决方案,哈哈。
【解决方案2】:

问题是我试图覆盖 items 标记,覆盖 dict items 方法。

在这种情况下,它在字典中寻找items,这不是我所期望的。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-11
    • 2012-12-07
    • 2012-05-23
    • 2019-07-29
    • 2015-07-04
    • 2014-03-15
    • 2017-12-29
    • 2014-09-12
    相关资源
    最近更新 更多