Django ImportError Нет модуля с именем 'catalog.context_processors'
Я новичок в Django, и у меня возникла проблема с Django context_processors. Я хочу использовать набор запросов во всех моих шаблонах для создания меню. Но я получаю эту ошибку, когда пытаюсь добраться до этой страницы http://mysite/catalog, которая вызывает мою cardabelle/catalog/views.py:
ImportError at /catalog/
No module named 'cardabelle.catalog'
Здесь "cardaballe" - это название моего проекта, а "каталог" - название моего приложения.
Вот некоторая интересная часть (я думаю) из моей cardabelle/cardabelle/settings.py:
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'debug_toolbar',
'catalog',
'autoslug',
)
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'template')],
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'cardabelle.catalog.context_processors.categories',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
WSGI_APPLICATION = 'cardabelle.wsgi.application'
и вот мой пользовательский контекст в cardabelle/catalog/views.py:
def categories(request):
return Category.objects.value()
Кто-то знает, почему django не находит мой новый пользовательский контекст?
Заранее спасибо за помощь!
1 ответ
Я думаю, у вас есть файл context_processors.py
в каталоге каталога, который находится на том же уровне, что и каталог cardabelle?
/catalog
__init__.py
context_processors.py
...
/cardabelle
__init__.py
settings.py
...
Если да, то context_processor
установка должна читать
TEMPLATES = [
{
# ...
'OPTIONS': {
'context_processors': [
# ...
'catalog.context_processors.categories',
# ...
],
},
},
]
Также context_processor должен возвращать dict
, Ваш текущий код читает Category.objects.value()
, Это, вероятно, опечатка при вставке в SO? На всякий случай, убедитесь, что это гласит Category.objects.values()
, который возвращает список диктов.
def categories(request):
return {'menu_categories': Category.objects.values()}
Затем он будет доступен как {{ menu_categories }}
в ваших шаблонах.