我是一个Django初学者,我遇到了django context_processors的问题。我希望在我所有的模板中使用一个查询集来生成一个菜单。但是,当我试图访问这个页面时,我会发现这个错误,http://mysite/catalog调用了我的cardabelle/catalog/views.py:
ImportError at /catalog/
No module named 'cardabelle.catalog'这里"cardaballe“是我的项目名称和”目录“我的应用程序名称。
这里有一些有趣的部分(我猜)来自我的硬纸板/硬膜/设置. my:
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找不到我的新的自定义上下文?
提前感谢您的帮助!
发布于 2015-06-05 19:42:54
我想您在目录目录中有文件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()。这可能是一个错误,而粘贴到这样呢?以防万一,确保它读取Category.objects.values(),这将返回一个dicts列表。
def categories(request):
return {'menu_categories': Category.objects.values()}然后,它将在模板中以{{ menu_categories }}的形式提供。
https://stackoverflow.com/questions/30674190
复制相似问题