首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django ImportError无模块名为“catalog.context_processors”

Django ImportError无模块名为“catalog.context_processors”
EN

Stack Overflow用户
提问于 2015-06-05 19:17:54
回答 1查看 1.6K关注 0票数 1

我是一个Django初学者,我遇到了django context_processors的问题。我希望在我所有的模板中使用一个查询集来生成一个菜单。但是,当我试图访问这个页面时,我会发现这个错误,http://mysite/catalog调用了我的cardabelle/catalog/views.py:

代码语言:javascript
复制
ImportError at /catalog/
No module named 'cardabelle.catalog'

这里"cardaballe“是我的项目名称和”目录“我的应用程序名称。

这里有一些有趣的部分(我猜)来自我的硬纸板/硬膜/设置. my:

代码语言:javascript
复制
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中的自定义上下文:

代码语言:javascript
复制
def categories(request):
    return Category.objects.value()

有人知道为什么django找不到我的新的自定义上下文?

提前感谢您的帮助!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-05 19:42:54

我想您在目录目录中有文件context_processors.py,它与cardabelle目录位于同一级别?

代码语言:javascript
复制
/catalog
    __init__.py
    context_processors.py
    ...
/cardabelle
    __init__.py
    settings.py
    ...

如果是,则context_processor设置应读取

代码语言:javascript
复制
TEMPLATES = [
    {
        # ...
        'OPTIONS': {
            'context_processors': [
                # ...
                'catalog.context_processors.categories',
                # ...
            ],
        },
    },
]

另外,context_processor应该返回一个dict。您当前的代码读取Category.objects.value()。这可能是一个错误,而粘贴到这样呢?以防万一,确保它读取Category.objects.values(),这将返回一个dicts列表。

代码语言:javascript
复制
def categories(request):
    return {'menu_categories': Category.objects.values()}

然后,它将在模板中以{{ menu_categories }}的形式提供。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30674190

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档