在Django模板标记库中导入外部库时出错

所以我正在尝试编写一个Django可重用的应用程序,它提供了一种在页面上显示Twitter提要的方法.我知道它已经存在了20次.这是一次学术练习. 🙂

目录结构非常简单:

myproject
|__  __init__.py
|__  manage.py
|__  settings.py
|__  myapp
     |__  __init__.py
     |__  admin.py
     |__  conf
          |__  __init__.py
          |__  appsettings.py
     |__  feedparser.py
     |__  models.py
     |__  templates
          |__  __init__.py
     |__  templatetags
          |__  __init__.py
          |__  twitterfeed.py
     |__  views.py
|__  templates
          |__  base.html
|__  urls.py

运行Django shell时,twitterfeed.py中定义的函数完美运行.我也相信我有正确命名和注册的模板标签.

正如您所看到的,我使用了优秀的Universal Feed Parser.我的问题不在UFP本身,而是UFP在导入模板标签库时无法调用.当我在base.py中{%load twitterfeed%}时,出现以下错误:

‘twitterfeed’ is not a valid tag
library: Could not load template
library from
django.templatetags.twitterfeed, No
module named feedparser

我使用以下语句导入feedparser:

import re, datetime, time, myapp.feedparser

我能说的最好,这个错误信息有点欺骗.我认为加载模板库时会发生ImportError,这是Django对它的解释.

有没有什么办法可以在我的可重用应用程序中导入feedparser.py,而无需让应用程序的用户在其PythonPath中的某处放置feedparser?

谢谢!

最佳答案 这看起来像是烦人的相对路径问题之一 – 在Python 2.6及更高版本中解决(你可以在其中导入..feedparser等)但在旧版本上经常有点棘手.解决这个问题的一种便宜而愉快的方法就是将feedparser.py移动到你的templatetags目录中,作为twitterfeed.py的兄弟

点赞