Django ImportError 没有名为 'catalog.context_processors' 的模块
Django ImportError No module named 'catalog.context_processors'
我是 Django 初学者,我遇到了一个 Django 问题 context_processors。
我想在我的所有模板中使用查询集来生成菜单。
但是当我尝试访问此页面 http://mysite/catalog 时出现此错误,该页面调用我的 cardabelle/catalog/views.py :
ImportError at /catalog/
No module named 'cardabelle.catalog'
这里 "cardaballe" 是我的项目名称和 "catalog" 我的应用程序名称。
这是我的 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 找不到我的新自定义上下文吗?
在此先感谢您的帮助!
我猜你在目录 catalog 中有文件 context_processors.py
,它与目录 cardabelle[=29= 处于同一级别]?
/catalog
__init__.py
context_processors.py
...
/cardabelle
__init__.py
settings.py
...
如果是,context_processor
设置应为
TEMPLATES = [
{
# ...
'OPTIONS': {
'context_processors': [
# ...
'catalog.context_processors.categories',
# ...
],
},
},
]
另外 context_processor 应该 return 一个 dict
。您当前的代码显示为 Category.objects.value()
。将它粘贴到 SO 时,这可能是一个错字?为了以防万一,请确保它显示为 Category.objects.values()
,其中 return 是一个字典列表。
def categories(request):
return {'menu_categories': Category.objects.values()}
然后它将作为 {{ menu_categories }}
在您的模板中可用。
我是 Django 初学者,我遇到了一个 Django 问题 context_processors。 我想在我的所有模板中使用查询集来生成菜单。 但是当我尝试访问此页面 http://mysite/catalog 时出现此错误,该页面调用我的 cardabelle/catalog/views.py :
ImportError at /catalog/
No module named 'cardabelle.catalog'
这里 "cardaballe" 是我的项目名称和 "catalog" 我的应用程序名称。
这是我的 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 找不到我的新自定义上下文吗?
在此先感谢您的帮助!
我猜你在目录 catalog 中有文件 context_processors.py
,它与目录 cardabelle[=29= 处于同一级别]?
/catalog
__init__.py
context_processors.py
...
/cardabelle
__init__.py
settings.py
...
如果是,context_processor
设置应为
TEMPLATES = [
{
# ...
'OPTIONS': {
'context_processors': [
# ...
'catalog.context_processors.categories',
# ...
],
},
},
]
另外 context_processor 应该 return 一个 dict
。您当前的代码显示为 Category.objects.value()
。将它粘贴到 SO 时,这可能是一个错字?为了以防万一,请确保它显示为 Category.objects.values()
,其中 return 是一个字典列表。
def categories(request):
return {'menu_categories': Category.objects.values()}
然后它将作为 {{ menu_categories }}
在您的模板中可用。