2010-01-17 4 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:

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 %} 

ошибка, которую я получаю, как следует:

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

Любая помощь будет оценена для этого:

ТИА

Эндрю

UPDATE:

Сайт работает, но я не могу получить теги шаблонов для работы. Если удалить PROJECT_NAME из INSTALLED_APPS я получаю следующее сообщение об ошибке:

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

ответ

2

Ошибка becaus у вас есть структура неправильно вашей папки, я думаю, вы должны прочитать документы, это 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

Ae Вы уверены, что это специально, чтобы сделать с тегом шаблона?

Похоже, что каталог project_name не находится на вашем пути к python. Вывод на странице с ошибкой должен показывать текущий путь python, поэтому вы можете проверить, соответствует ли он.

Прочитайте это, чтобы узнать, как это исправить: http://djangotricks.blogspot.com/2008/09/note-on-python-paths.html

+0

Спасибо за ваш вклад Я обновил свой вопрос –

1

Ваша структура проекта, а не ставить слишком тонкую точку на ней, беспорядок.Некоторые из многих вещей, которые вам нужно сделать:

  • Не используйте одно и то же имя для содержащего каталога (проекта) и внутреннего (это должно быть имя приложения).
  • manage.py и settings.py должны находиться на внешнем уровне, а не внутри приложения.
  • Я не знаю, что второй views есть - это действительно views.py? В этом случае он никогда не будет использоваться.
  • Пустые файлы внутри templatetags и views должны быть __init__.py, т.е. два символа подчеркивания с обеих сторон.
  • Возможно, фактическая причина вашей проблемы: вам нужна модель.py внутри приложения, даже если она пуста, для загрузки Django вообще - templatetags не будет работать без нее.
Смежные вопросы