我无法让我的网站识别自定义模板标记。我有以下目录结构:
然后我将其添加到INSTALLED_APPS:
INSTALLED_APPS = (
# 'django.contrib.auth',
'django.contrib.contenttypes',
# 'django.contrib.sessions',
'django.contrib.sites',
'project_name'
)
然后我在模板中引用这个:
{% load getattribute %}
{% for header in headers %}
<td>{{ obj|getattribute:header }}</td>
{% endfor %}
我得到的错误如下:
无法导入 controllers.EventController。错误 是:没有名为project_name的模块
任何帮助都将受到赞赏:
TIA
安德鲁
更新
该网站有效但我无法使模板标签生效。如果我从installed_apps中删除project_name,我会收到以下错误:
异常值:'getattribute'是 不是有效的标签库:不能 从中加载模板库 django.templatetags.getattribute,不 名为getattribute的模块
答案 0 :(得分:2)
错误是因为你的文件夹结构错了,我认为你必须阅读文档,这tutorial (part1)解释了正确的结构:
你有一个与app不同的项目:
在您的INSTALLED_APPS
:
INSTALLED_APPS = (
# 'django.contrib.auth',
'django.contrib.contenttypes',
# 'django.contrib.sessions',
'django.contrib.sites',
'project_name.app_name',
)
这就是全部
答案 1 :(得分:1)
您确定这与模板标签有关吗?
听起来像project_name目录不在你的python路径上。错误页面上的输出应该显示当前的python路径,因此您可以检查它是否符合预期。
阅读本文以了解如何解决此问题: http://djangotricks.blogspot.com/2008/09/note-on-python-paths.html
答案 2 :(得分:1)
你的项目结构是,不要把它放得太精细,一团糟。你需要做的很多事情中的一些:
manage.py
和settings.py
应位于外层,而不是应用内。views
是什么 - 它实际上是views.py
吗?在这种情况下,它永远不会被使用。templatetags
和views
内的空文件应为 __init__.py
,即两侧的两个下划线。