2010-01-17 69 views
1

我無法讓我的網站識別自定義模板標籤。我有以下目錄結構:如何創建自定義django過濾器標籤

  • PROJECT_NAME
    • PROJECT_NAME
      • templatetags
        • _ __init __ _.py
        • getattribute.py
      • 點意見
        • _ __init __ _.py
        • 的index.html
      • 意見
      • settings.py
      • main.py
      • manage.py
      • urls.py
    • nbproject的

然後,我已經加入這個在INSTALLED_APPS:

{% load getattribute %} 
{% for header in headers %} 
    <td>{{ obj|getattribute:header }}</td> 
{% endfor %} 

這是我得到的錯誤是:

INSTALLED_APPS = (
# 'django.contrib.auth', 
    'django.contrib.contenttypes', 
# 'django.contrib.sessions', 
    'django.contrib.sites', 
    'project_name' 
) 

我那麼模板像這裏面引用此如下:

Could not import controllers.EventController. Error was: No module named project_name

任何幫助,將不勝感激這個:

TIA

安德魯

UPDATE:

該網站工作,但我不能得到的模板標籤的工作。如果我從installed_apps中刪除了project_name,我會收到以下錯誤:

Exception Value: 'getattribute' is not a valid tag library: Could not load template library from django.templatetags.getattribute, No module named getattribute

回答

2

的錯誤是因爲...你有錯你的文件夾的結構,我想你必須閱讀的文檔,這tutorial (part1)解釋正確的結構:

你有一個項目,是不一樣的東西該應用:

  • PROJECT_NAME
    • APP_NAME
      • 個templatetags
        • getattribute.py
      • models.py
      • views.py
  • settings.py
  • manage.py

和您的INSTALLED_APPS

INSTALLED_APPS = (
# 'django.contrib.auth', 
    'django.contrib.contenttypes', 
# 'django.contrib.sessions', 
    'django.contrib.sites', 
    'project_name.app_name', 
) 

這是所有

1

您確定這是專門用於模板標記嗎?

聽起來像project_name目錄不在你的python路徑。錯誤頁面上的輸出應顯示當前的Python路徑,以便檢查它是否符合預期。

閱讀,以瞭解如何解決它: http://djangotricks.blogspot.com/2008/09/note-on-python-paths.html

+0

感謝您的輸入我已經更新了我的問題 – 2010-01-17 17:59:14

1

你的項目的結構,不要把太細一點就可以了,一片狼藉。一些你需要做的很多事情:

  • 不要使用相同的名稱爲包含目錄(項目)和內部(應該是一個應用程序名稱)。
  • manage.pysettings.py應該在外層,而不是在應用程序內。
  • 我不知道第二個views是什麼 - 它實際上是views.py?在這種情況下,它將永遠不會被使用。
  • templatetagsviews中的空文件應該是__init__.py,即任意一方的兩個下劃線。
  • 可能是你的問題的實際原因:你需要一個應用程序內的models.py,即使它是空的,Django根本無法加載它 - 如果沒有它,templatetags將無法正常工作。